我试图写一个插入一个表(A)的存储过程,然后查询另一个表(B),然后最后插入表(C)中的最后一个插入ID,以及表中的结果B.我编写了一个名为VetIdFromCode的存储过程来从表B中进行选择,它可以单独工作。当我单独运行查询时,为IN参数赋值,然后它运行正常,但是当我尝试将其保存为存储过程时,它告诉我无效的SQL附近' SET @LIID ...&#39 ; 非常感谢您的帮助。
CREATE PROCEDURE `NewClientUser`(
IN `uemail` VARCHAR(60),
IN `uphash` CHAR(40),
IN `uvcode` VARCHAR(11))
DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY INVOKER
INSERT INTO users (user_id,user_email,user_hash,user_role)
VALUES (NULL,uemail,uphash,'1');
SET @LIID = LAST_INSERT_ID();
CALL `VetIdFromCode`(uvcode, @VID);
INSERT INTO user_vet_lookup(user_id,vet_id)
VALUES (@LIID,@VID);
答案 0 :(得分:1)
您需要启动"代码"关键词" BEGIN"并提出一个" END"在末尾。像:
CREATE PROCEDURE `NewClientUser`(
IN `uemail` VARCHAR(60),
IN `uphash` CHAR(40),
IN `uvcode` VARCHAR(11))
BEGIN
DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY INVOKER
INSERT INTO users (user_id,user_email,user_hash,user_role)
VALUES (NULL,uemail,uphash,'1');
SET @LIID = LAST_INSERT_ID();
CALL `VetIdFromCode`(uvcode, @VID);
INSERT INTO user_vet_lookup(user_id,vet_id)
VALUES (@LIID,@VID);
END
查看文档:{{3}}