mysql过程错误ERROR 1304&ERROR 1305
我是使用程序的新手,似乎无法使我的工作正常。我正在使用MySQL v5.1.36,并在WAMPP服务器上使用MySQL
Console输入代码。如果我去(重新)创建程序。我收到错误#1304(42000)。
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)。
mysql> USE modx;Database changed
mysql> SET @crID = modx.getCRID("South East");
ERROR 1305 (42000): FUNCTION modx.getCRID does not exist
如果该程序存在于一个程序中,怎么可能不存在于另一程序中呢?我究竟做错了什么。
回答:
我相信问题是
- 发生第一个错误是因为您试图重新创建现有过程。如果您要先删除该程序,则不会出现此错误,
- 第二个错误是因为PROCEDUREs是用CALL语句调用的,而FUNCTIONs是作为函数引用调用的,就像在代码中一样。您必须定义一个功能,而不是一个过程。(MySQL文档)说:
CREATE
FUNCTION语句在MySQL中也用于支持UDF(用户定义函数)。请参见第21.2节“向MySQL添加新功能”。UDF可以视为外部存储功能。存储的函数与UDF共享其名称空间。有关描述服务器如何解释对不同类型功能的引用的规则,请参见第8.2.3节“功能名称解析和解析”。
要调用存储过程,请使用CALL语句(请参见第12.2.1节“ ALL语法”)。要调用存储的函数,请在表达式中引用它。该函数在表达式求值期间返回一个值。
以上是 mysql过程错误ERROR 1304&ERROR 1305 的全部内容, 来源链接: utcz.com/qa/405103.html