简体   繁体   English

mysql错误(#1064)存储过程创建错误

[英]mysql error (#1064) stored procedure creation error

I'm trying to create a stored procedure but i keep getting error: 我正在尝试创建一个存储过程,但我不断出错:

#1064 - You have an error in your SQL syntax; #1064-您的SQL语法有误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' B' at line 3 在第3行的“ NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT''B”附近检查与您的MySQL服务器版本相对应的手册以使用正确的语法

My SQL is as follows: 我的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$$

I've tried to include DELIMITER but no result. 我尝试加入DELIMITER,但没有结果。 I guess the problem might be in the quotes. 我想问题可能出在引号中。 Can someone point me out the solution? 有人可以指出解决方案吗? Thanks! 谢谢!

MySQL version 5.5 MySQL 5.5版

You need a varchar length on the return statement of the procedure something as 您需要在过程的return语句上添加一个varchar长度,例如

RETURNS VARCHAR(1024)

So the procedure becomes 所以程序变成

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; $$

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM