存储过程代码如下
CREATE PROCEDURE `GetPersonName`(IN Pid INTEGER(11))
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select personname from person where `personid`=Pid;
END;
报错信息如下
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'selec
t personname from person where `personid`=Pid' at line 6
报错原因
MySQL默认以";"为分隔符,就上面例子,当MySQL遇到第一个“;”时,即select personname from person where `personid`=Pid后面那个“;”,MySQL认为此“;”前面是合法的SQL语句,就执行了,不报错才怪。
解决方案
使用DELIMITER,用来声明分隔符的。在MySQL中正确编译存储过程的格式如下
DELIMITER //
CREATE PROCEDURE `GetPersonName`(IN Pid INTEGER(11))
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select personname from person where `personid`=Pid;
END; //
DELIMITER ;
这样MySQL才会将";"当做存储过程中的代码,之后要把分隔符还原。
交流Q群:90807359
1万+

被折叠的 条评论
为什么被折叠?



