我是新手使用程序,似乎无法使我的工作。我正在使用MySQL v5.1.36并在WAMPP服务器上使用MySQL控制台输入我的代码。如果我去(重新)创建程序。我收到错误#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
如果一个程序存在,另一个程序怎么可能不存在?我做错了什么。
答案 0 :(得分:4)
我相信问题是
CREATE FUNCTION语句也是 在MySQL中用于支持UDF (用户定义的函数)。见章节 21.2,“向MySQL添加新功能”。 UDF可以被视为外部 存储功能。存储功能 与UDF共享其命名空间。看到 第8.2.3节“函数名称解析 和决议“,对于规则 描述服务器如何解释 引用不同种类的 功能
要调用存储过程,请使用 CALL声明(见第12.2.1节, “CALL语法”)。要调用存储的 功能,请参考 表达。该函数返回一个 表达评估期间的价值。