【发布时间】:2016-01-11 19:12:30
【问题描述】:
我有以下存储过程:
CREATE PROCEDURE `Get_Events_And_Deadlines_By_User`(IN `intervalStart` INT, IN `intervalEnd` INT)
BEGIN
IF (intervalStart != 0 AND intervalEnd != 0) THEN
SELECT 1 AS `test`;
ELSEIF (intervalStart != 0 AND intervalEnd = 0) THEN
BEGIN
SELECT 2 AS `test`;
IF ((SELECT FOUND_ROWS())=1) THEN
SELECT 3 AS `test`;
END IF;
END;
ELSE
SELECT 4 AS `test`;
END IF;
END
当我运行call Get_Events_And_Deadlines_By_User(1,0) 时,我只得到以 2 作为结果的选择查询,if 语句中的选择永远不会返回。在返回存储过程之前,似乎只执行了遇到的第一个选择查询。为什么是这样?我能做些什么来解决这个问题?我希望 if 语句中的 select 查询是 if 成立时的唯一结果。
【问题讨论】:
-
您也可以发布您的 PHP 代码吗?该过程在 2 个 SELECT 中返回多个结果集,您的代码不仅需要遍历每个结果集的记录,还需要遍历多个结果集
-
@vmachan 我现在实际上没有任何 PHP 代码,我只在 phpmyadmin 中对其进行了测试,并且仅从第一个查询(
if语句之前)中获得了一个结果集。 -
更改:
IF ((SELECT FOUND_ROWS())==1) THENbyIF ((SELECT FOUND_ROWS())=1) THEN。 -
@wchiquito 对不起,这是我的问题中的错字,我已经编辑过了。问题依然存在。如果我一起删除 if 语句,我什至会遇到问题:
SELECT 2 AStest; SELECT 3 AStest;。
标签: php mysql sql stored-procedures