当前位置: 首页 > 面试题库 >

mysql过程错误ERROR 1304&ERROR 1305

汪欣德
2023-03-14
问题内容

我是使用程序的新手,似乎无法使我的工作正常。我正在使用MySQLv5.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语法”)。要调用存储的函数,请在表达式中引用它。该函数在表达式求值期间返回一个值。



 类似资料:
  • 我试图创建一个存储过程,但不断出现错误: #1064年的今天,您的SQL语法出现错误;查看与您的MySQL服务器版本对应的手册,以了解第3行“NOT DETERMINISTIC CONTAINS SQL SECURITY DEFINER COMMENT”“B”附近使用的正确语法 我的SQL如下: 我尝试过包含分隔符,但没有结果。我想问题可能出在引号里。有人能给我指出解决办法吗?谢谢 MySQL 5

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

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

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

  • 当我想声明这个程序时,它没有声明这个代码没有报告任何报告 我不知道那是问题 我想在solr索引中使用此过程,但此过程不执行 当我将分隔符更改为@@时,会出现此错误 错误1064 (42000):你有一个错误在你的SQL语法;检查手册,对应于你的MySQL服务器版本的正确语法使用附近的'默认NULL;声明stateORds varchar(255)默认NULL;在第4行mysql声明叶猫

  • 问题内容: 我将MySQL 5.0用于GoDaddy(linux)托管的网站。 我在Web应用程序上进行了一些测试,突然我发现页面刷新非常缓慢。最终,经过漫长的等待,我到达了一个页面,上面写着“ MySQL错误,连接过多…”,它指向我的连接数据库的config.php文件。 只是我连接到数据库,没有其他用户。在每个页面上,我都在顶部包含config.php文件,并在页面末尾关闭mysql连接。中间