【问题标题】:MySQL Stored procedure won't fetch the whole tableMySQL存储过程不会获取整个表
【发布时间】:2012-06-04 15:18:57
【问题描述】:

首先我尝试了这个,(MySQL/phpmyadmin)

CREATE DEFINER=`root`@`localhost` PROCEDURE `tempcheck`() NO SQL 

BEGIN 
SET @query_string = 'SELECT * FROM properties'; 
PREPARE query_statement FROM @query_string; 
EXECUTE query_statement; 
DEALLOCATE PREPARE query_statement; 

END

这只是获取表“属性”的第一条记录。该表具有多个值。当我 sqlquery 'select * from properties;'它返回整个表。

我什至试过这个简单的方法

BEGIN

SELECT * FROM properties';

END

尝试了许多 stackoverflow 问答。他们都建议我做一个临时表。即使我这样做了,当它首先不返回整个表时,它将如何返回整个表。一个 mysql 存储过程实际上是否可以返回整个表。如果可以,那怎么做?

【问题讨论】:

  • 从 proc 中删除 DEALLOCATE 语句。您无需手动解除分配,因为它会在会话关闭后自动释放。
  • 你想做什么?将多行结果集返回到您的应用程序?如果是这样,您的应用程序将不得不从 mySQL 服务器逐行读取结果集。如果由于某种原因您必须为此使用存储过程而不仅仅是 SELECT,请通过使 SELECT 工作(在您的应用程序中)来调试您的应用程序,然后切换到使用您的简单存储过程。
  • @Nav 你有什么问题?你需要将整个表记录存储到一个变量吗???
  • @Romil 我已经尝试删除解除分配。检查我的第二段代码
  • @OllieJones 是的,我正在尝试返回多条记录。换句话说,我希望这个过程完全按照那个简单的 SQL 语句来做。我尝试在 phpmyadmin 中测试运行此过程,它确实从表“属性”返回了记录,但它只返回我想要整个表的一条记录。我假设如果 phpmyadmin 可以正确返回这个,那么我可以让我的 PHP 应用程序做同样的事情。你是说如果我从 PHP 应用程序调用这个过程,它将返回整个表?

标签: mysql stored-procedures phpmyadmin


【解决方案1】:

各位,谢谢大家的帮助。我的一位同事帮我解决了这个问题。显然这是 phpmyadmin 中的一个错误。 phpmyadmin 不会返回超过一条记录

【讨论】:

  • 对。 phpmyadmin 不知道,也没有设置猜测,当您调用 sp 时您想要一个多行结果集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
相关资源
最近更新 更多