我正在尝试创建存储过程,但我一直收到错误:
#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在第3行“非确定性包含SQL SQL安全性定义注释”B'附近使用正确的语法
我的SQL如下:
DELIMITER $$
CREATE FUNCTION `prodcat_descendants` (idcat INTEGER(11) )
RETURNS VARCHAR
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
RETURN (select GROUP_CONCAT(DISTINCT id_category SEPARATOR ',') from cms_prodcategories where id_parent=idcat and active='1');
END$$
我试图包括DELIMITER但没有结果。我想这个问题可能在引号中。 有人能指出我的解决方案吗? 谢谢!
MySQL版本5.5
答案 0 :(得分:1)
您需要在过程的return语句中使用varchar长度
RETURNS VARCHAR(1024)
所以程序变为
DELIMITER $$
CREATE FUNCTION `prodcat_descendants` (idcat INTEGER(11) )
RETURNS VARCHAR(1024)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
RETURN (select GROUP_CONCAT(DISTINCT id_category SEPARATOR ',') from cms_prodcategories where id_parent=idcat and active='1');
END; $$