我有一个存储过程如下
DROP PROCEDURE IF EXISTS maintain//
CREATE PROCEDURE maintain
(
IN inMaintainType CHAR(1), -- 'i' = Insert, 'u'= Update/Edit, 'd'= Delete
IN inEntityId INT, -- 0 for Insert Case
IN inEntityName VARCHAR(100),
IN inEntityDescription VARCHAR(100),
IN inEntityPrefix CHAR(1),
IN inStatus CHAR(1), -- 'a' = Active, 'i' = Not active
IN inEmpId INT,
OUT outReturnStatus INT,
OUT outReturnRemarks VARCHAR(100)
)
BEGIN
IF inMaintainType= 'i'
THEN
INSERT INTO Entity
(
EntityId,
EntityName,
EntityDescription,
EntityPrefix,
Status,
CreatedBy,
CreatedDate,
ModifiedBy,
ModifiedDate
)
VALUES
(
li_EntityId,
inEntityName,
inEntityDescription,
inEntityPrefix,
'a',
inEmpId,
now(),
inEmpId,
now()
);
if row_count() != 0
THEN SET outReturnStatus =0 ,
outReturnRemarks = 'Insert Successful';
ELSE SET outReturnStatus = 1,
outReturnRemarks = 'Insert Not Successful';
END IF;
END IF ;
我想调用过程来插入带变量的数据
mysql_query("CALL maintain('i','$EntityId','$EntityName','$EntityDescription','$EntityPrefix','$Status','$EmpId',@outvari1,@outvari2)")or die(mysql_error());
但是它向我显示了错误
未知栏' li_EntityId'在'字段列表'
EntityId是自动递增的字段。
答案 0 :(得分:1)
将上述评论澄清为实际答案......
您已设置表格,以便字段EntityId将自动增加。
因此,当您在表格中插入记录时,您不需要为ID字段显式添加值 - 它会为您执行此操作。
因此,解决方案是从INSERT INTO ...语句中删除EntityId字段,并从插入的值中删除li_EntityId值,因此只有8个参数传递到剩余的8个字段中。