【发布时间】: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