0

MySQL 5.5 で Insert Stored Procedure を呼び出そうとしています。私が使用しているストアドプロシージャは次のとおりです。

DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `SetProvince`(
IN p_Code VARCHAR(20),
IN p_Name VARCHAR(200),
IN p_CountryID INT(11),
IN p_Description TEXT,
IN p_IsActive BIT(1),
IN p_CreationDatestamp CHAR(8)
)
BEGIN

    INSERT INTO province  
    (                     
      `Code`,               
      `Name`,               
      `CountryID`,          
      `Description`,        
      `IsActive`,           
      `CreationDatestamp`   
    )                     
    VALUES                
    (                     
      @p_Code,            
      @p_Name,            
      @p_CountryID,         
      @p_Description,     
      @p_IsActive,          
      @p_CreationDatestamp
    );


END;

しかし、ストアドプロシージャを次のように呼び出すたびに:

   CALL SetProvince('0003','Assam',1,'hehehehehe',1,'20130607');

すべての列に NULL を挿入します。これのどこが間違っていますか?

テーブル構造は次のとおりです。

CREATE TABLE `province` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Code` varchar(20) DEFAULT NULL,
`Name` varchar(200) DEFAULT NULL,
`CountryID` int(11) DEFAULT NULL,
`Description` text,
`IsActive` bit(1) DEFAULT NULL,
`CreationDatestamp` char(8) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `FK_province_country_idx` (`CountryID`),

CONSTRAINT FK_province_countryFOREIGN KEY ( CountryID) REFERENCES country( ID) ON DELETE NO ACTION ON UPDATE NO ACTION)

ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=latin1$$
4

1 に答える 1

4

@変数名の前に置くべきではありません。変数@p_Codep_Codeは 2 つの異なる変数です。

@-変数は、1 つの接続の存続期間全体にわたって使用できるため、さまざまなプロシージャ、トリガー、通常のクエリなどからアクセスできます。

宣言された変数とプロシージャ パラメーターは、そのスコープでのみ使用できます。

于 2013-06-07T06:49:24.883 に答える