1
我是一般的MySQL和数据库的新手。我正在尝试创建一个MySQL存储过程,但一直得到一个模糊的语法错误: “你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'sps; EXECUTE附近使用正确的语法stmt USING nn,ee,ll,cc,uu; COMMIT END'在第11行“MySQL存储过程中的EXECUTE给出语法错误
如果我删除行”PREPARE stmt ...“,则创建存储过程。当我放回线路时,再次出现错误。
这是什么,我做错了?
DELIMITER //
CREATE PROCEDURE `account_create` (nn VARCHAR(25),
ee BIGINT,
ll BIGINT,
cc VARCHAR(100),
uu VARCHAR(25))
BEGIN
DECLARE newId BIGINT;
DECLARE sps VARCHAR(50);
START TRANSACTION;
set sps = 'INSERT INTO account SET name=?, entity=?, ledger=?, tblname=tmpXXX, creation_date=CURDATE(), comment=?, uname=?';
PREPARE stmt FROM sps;
COMMIT;
END//
谢谢,我这样做,它的工作。 MySQL文档从未澄清'varName'和'@varName'之间的区别,我从之前的一个stackoverflow问题看到,'@'变量具有会话范围,而非'@'变量具有过程范围。如果我的理解是正确的,那么上面的非'@'版本也不行? – Lelanthran 2012-07-19 06:41:06
它不应该工作,很简单,因为您需要使用会话变量而不是局部变量。 – 2012-07-19 06:54:53