【问题标题】:mysql error (#1064) stored procedure creation errormysql error (#1064) 存储过程创建错误
【发布时间】:2014-12-17 23:49:00
【问题描述】:

我正在尝试创建一个存储过程,但我不断收到错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ''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 版

【问题讨论】:

    标签: mysql stored-procedures phpmyadmin


    【解决方案1】:

    您需要在过程的返回语句上设置一个 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; $$
    

    【讨论】:

    • 谢谢。 VARCHAR 定义存在问题,但出现新错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 9 行的 '' 附近使用正确的语法 - 使用 phpmyadmin
    • 用 SQL Manager 试过了,但它工作但首先我需要设置这个 GLOBAL:SET GLOBAL log_bin_trust_function_creators = 1;谢谢!
    猜你喜欢
    • 2020-12-02
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2018-06-21
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多