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

如果该程序存在于一个程序中,怎么可能不存在于另一程序中呢?我究竟做错了什么。

回答:

我相信问题是

  1. 发生第一个错误是因为您试图重新创建现有过程。如果您要先删除该程序,则不会出现此错误,
  2. 第二个错误是因为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

回到顶部