当前位置: 首页 > 知识库问答 >
问题:

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

单于淇
2023-03-14

我试图创建一个存储过程,但不断出现错误:

#1064年的今天,您的SQL语法出现错误;查看与您的MySQL服务器版本对应的手册,以了解第3行“NOT DETERMINISTIC CONTAINS 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$$

我尝试过包含分隔符,但没有结果。我想问题可能出在引号里。有人能给我指出解决办法吗?谢谢

MySQL 5.5版

共有1个答案

秦涵映
2023-03-14

您需要在过程的返回语句上设置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; $$
 类似资料:
  • 如果不能理解我的英语是因为我的英语不好。。。。我会尽力解释我的问题。 我试图在mysql(phpmyadmin)中创建一个存储过程,但出现了以下错误: #1064年的今天,您的SQL语法出现错误;请查看与MySQL服务器版本对应的手册,以获取第3行“”附近使用的正确语法 这是存储过程的代码: 这是表格用户的代码: 对不起,我的英语不好

  • 问题内容: 这让我发疯。 还给我 那将是线 怎么了 我尝试了一些小的更改,但总是收到相同的错误。我检查了文档,但看不到语法错误。我知道这是一个愚蠢的错误,但是我坚持了大约半个小时。是一个游标,它迭代每一行并为每一行执行一个存储过程;我已经用存储函数完成了它(它的工作原理很像魅力),但是在服务器上发布时,我看到我的共享主机不支持存储函数,只支持存储过程:(因此,这是我最好的方法我发现了。 问题答案:

  • 我想使用phpmyadmin在MySQL数据库中进行存储过程。 几分钟后,我在“创建过程”对话框中键入并按下GO,我的语法出现了错误。 我在谷歌上搜索过哪一个是错的,但仍然没有找到。请任何人给我一些建议如何解决这个问题。 这是我的MySQL存储过程查询。 我有这样的错误 处理您的请求: 以下查询失败:"CREATE DEFINER=@PROCEDURE(INBIT(1), ININT, INDAT

  • 我使用以下代码导入存储过程: 但当我在我的服务器上执行它时,会出现以下错误: 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以在'PROCEDURE附近使用正确的语法(INVARCHAR(255),ININT(11),IN'etu'在第6行 我不知道为什么会出现这个错误 表的结构: 创建人: MySQL版本:5.6.17-MySQL社区服务器(GPL) 谢谢你的帮助!

  • 问题内容: 我不断收到此错误: MySQL说:#1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第15行“ INSERT INTO books.book(isbn10,isbn13,title,edition,author_f_name,author_m_na’‘ 与此查询: 知道是什么问题吗? 问题答案: 也许您忘记在此代码行之后添加“ ”:

  • 问题内容: 我相信MySQL当前没有可用的东西允许访问MySQL存储过程中最后执行的语句。这意味着在存储过程中引发泛型时,很难/不可能得出错误的确切性质。 是否有人有变通办法来推导MySQL存储过程中的错误,而不涉及为每个可能的SQLSTATE声明处理程序? 例如,假设我正在尝试返回一个error_status,它超出了下面的通用“ SQLException在此块中的某处发生”: 有小费吗? PS