首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql过程错误Error 1304 & ERROR 1305

mysql过程错误Error 1304 & ERROR 1305
EN

Stack Overflow用户
提问于 2010-08-04 09:37:05
回答 1查看 23.6K关注 0票数 5

我刚开始使用程序,似乎不能让我的程序正常工作。我正在使用WAMPP v5.1.36,并使用MySQL服务器上的MySQL控制台输入代码。如果我去(重新)创建这个过程。我得到错误#1304 (42000)。

代码语言:javascript
运行
复制
mysql>  DELIMITER //
mysql>
mysql>  CREATE PROCEDURE modx.getCRID (IN x VARCHAR(255),OUT y INT)
    ->  BEGIN
    ->          DECLARE y INT;
    ->          SELECT id INTO y
    ->          FROM `modx`.coverage_region
    ->          WHERE `coverage_region`.name = x;
    ->  END//
ERROR 1304 (42000): PROCEDURE getCRID already exists
mysql>
mysql>  DELIMITER ;

但是,如果我尝试使用该过程,则会得到错误#1305 (42000)。

代码语言:javascript
运行
复制
mysql> USE modx;
Database changed
mysql> SET @crID = modx.getCRID("South East");
ERROR 1305 (42000): FUNCTION modx.getCRID does not exist

如果一个过程存在,怎么可能不存在于另一个呢?我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-04 10:44:50

我相信问题是

  1. 出现第一个错误是因为您正在尝试重新创建现有过程。如果您首先删除该过程,则不会收到此错误,
  2. 第二个错误是因为过程是使用CALL语句调用的,而函数是作为函数引用调用的,就像在代码中一样。您必须定义函数,而不是过程。(MySQL documentation)说:

在MySQL中还可以使用CREATE FUNCTION语句来支持UDF(用户定义函数)。

请参阅第21.2节,“向MySQL添加新函数”。可以将UDF视为外部存储函数。存储函数与UDF共享其名称空间。有关描述服务器如何解释对不同类型函数的引用的规则,请参阅第8.2.3节“函数名称解析和解析”。

要调用存储过程,请使用CALL语句(请参阅第12.2.1节,“调用语法”)。要调用存储函数,请在表达式中引用它。此函数在表达式计算期间返回值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3401982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档