0

我试图在 MySQL 5.5 中调用插入存储过程。我使用的存储过程是:

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`),

约束FK_province_country外键 ( CountryID) 引用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是两个不同的变量。

@-variables 可用于一个连接的整个生命周期,因此您可以从不同的过程、触发器、正常查询等访问它。

声明的变量和过程参数仅在该范围内可用。

于 2013-06-07T06:49:24.883 回答