【发布时间】:2012-12-14 06:29:39
【问题描述】:
当我在 MySQL 中 CALL 这个 proc 时,它只显示 LOADING... 甚至冻结我的服务器:
delimiter $$
CREATE PROCEDURE MyProc(IN index1 INT, IN count1 INT, IN index2 INT, IN count2 INT)
BEGIN
SELECT id FROM view1 WHERE column1 IS NULL OR column1 = 1 ORDER BY dateColumn DESC LIMIT index1, count1;
SELECT id FROM view1 WHERE column2 = 0 ORDER BY column3 DESC LIMIT index2, count2;
END$$
delimiter ;
如果我只有SELECTs 之一,它可以工作。
有人知道我错过了什么/做错了吗?
非常感谢!
详情
我正在为 PHP 创建一个 proc,这样我就不必与数据库建立如此多的连接。每个SELECT 都需要有自己的结果集,并带有列信息,以便在 PHP 中使用。
我需要稍微额外的速度,因为我的网站严重依赖动态分页。
【问题讨论】:
-
不确定它为什么会挂起,但您可能希望两个选择之间的联合以获得单个结果集
-
你也可以试试 Set @someVar := (select .....)
-
@PeterJ 感谢收看!是的,我几乎把它从文档中撕下来了,所以我不知道是什么给出的。至于
UNION,这n+1个结果集没有列名吧? -
@SureshKamrushi 感谢您的宝贵时间!我要返回
@someVar吗? MySQL 显然不是我的强项。 ;P -
不确定这在 MySQL 中是如何工作的,我更多地使用 SQL/Server,它从内存中保持列名正常(如果它们相同)
标签: mysql stored-procedures phpmyadmin freeze multiple-resultsets