mysql error (#1064) 存储过程创建错误
Posted
技术标签:
【中文标题】mysql error (#1064) 存储过程创建错误【英文标题】:mysql error (#1064) stored procedure creation error 【发布时间】: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 版
【问题讨论】:
【参考方案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;谢谢!以上是关于mysql error (#1064) 存储过程创建错误的主要内容,如果未能解决你的问题,请参考以下文章
解决mysql 8报错 ERROR 1064 (42000): You have an error in your SQL syntax
解决mysql 8报错 ERROR 1064 (42000): You have an error in your SQL syntax