为啥在使用简单存储过程时出现 MySQL 错误 #1312?

Posted

技术标签:

【中文标题】为啥在使用简单存储过程时出现 MySQL 错误 #1312?【英文标题】:Why Am I Getting MySQL Error #1312 when Using a Simple Stored Procedure?为什么在使用简单存储过程时出现 MySQL 错误 #1312? 【发布时间】:2011-02-19 23:59:09 【问题描述】:

我正在尝试学习如何使用 mysql 存储过程。 MySQL 接受了我的程序:

CREATE PROCEDURE SimpleProc()
   BEGIN
   SELECT *  FROM myTable;
   END

(在phpMyAdmin中,我设置了//作为分隔符。真实版本具有实际表的名称而不是myTable。)。

但是,当我使用 CALL SimpleProc(); 调用该过程时,我收到错误“#1312 - PROCEDURE mydb.SimpleProc 无法返回给定上下文中的结果集”。

我了解到某些版本的 php 或 phpMyAdmin 不能用于存储过程。

我正在使用在带有 MAMP 1.9 的 Mac 上运行的本地主机。我有 MySQL 5.1.44、PHP 5.2.13 和 5.3.2、phpMyAdmin 3.2.5。有谁知道存储过程是否适用于我的设置?我做错了什么吗?有什么建议吗?

向大红色大喊,争取在 Lax 获得三倍加时赛胜利。

谢谢, 拉克西米迪

【问题讨论】:

【参考方案1】:

是的,在某些旧版本的 phpMyAdmin 中似乎存在一个错误,这可能会导致您遇到 1312 错误。从 phpMyAdmin 调用包含 SELECT 语句的存储过程时,可能会发生这种情况。

您可能需要查看以下帖子以进一步阅读:

MySQL Stored Procedures not working with SELECT (basic question) How do I write an SP in phpMyAdmin (MySQL)? (cmets)

此错误仅影响 phpMyAdmin,您仍然可以从其他任何地方调用存储过程。

【讨论】:

嘿丹尼尔,感谢您提供有趣的信息。看起来其他人大致运行我的设置也有同样的问题。现在,我必须弄清楚如何从 php.ini 调用 mysql 存储过程。再次感谢您提供非常有用的信息。 -Laxmidi

以上是关于为啥在使用简单存储过程时出现 MySQL 错误 #1312?的主要内容,如果未能解决你的问题,请参考以下文章

尝试在存储过程中更新时出现 MySQL 错误代码 1175

Mysql创建存储过程时出现ERROR 1064错误

为啥在尝试更新 MySQL 条目时出现“超过锁定等待超时”错误?

HSQL 为啥在使用 GET DIAGNOTICS <variable> = ROW_COUNT 时出现错误

为啥在 C# .Net Core 3 中连接到 MySql 时出现错误

为啥我的脚本在执行时出现错误 1064