2
我有一個MySQL存儲過程返回多個結果集。見下面從MySQL程序獲取空結果集
` BEGIN /**/
SELECT u.user_id,
u.user_name
FROM user u
UNION
SELECT 1,1 FROM DUAL WHERE FALSE;
SELECT g.group_id,
g.group_name
FROM group g
UNION
SELECT 1,1 FROM DUAL WHERE FALSE;
SELECT r.role_id,
r.role_name
FROM role r
UNION
SELECT 1,1 FROM DUAL WHERE FALSE;
END`
在PHP,我算結果集在下面的方式處理
$rsCount = 1;
do {
$rowset = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($rowset) {
switch ($rsCount) {
case 1: //first resultset
$users = $rowset;
break;
case 2: //second resulset
$groups = $rowset;
break;
case 3: //third resultset
$roles = $rowset;
break;
default:
break;
}
}
$rsCount++;
} while ($stmt->nextRowset());
但是,如果組表是空的,則MySQL只返回2個結果集,它拋出我的PHP邏輯 - 是無論如何強迫MySQL返回一個空的結果集?是否有更好的PHP邏輯來處理這個問題 - 例如,我可以命名結果集並在PHP中檢查相同的結果嗎?
如果沒有乾淨的做法,你總是可以將所有固定行聯合到查詢上,然後在PHP中忽略它。 – Laurence 2014-09-19 20:57:03
我想基於其他反饋,但這不工作以及 - 'SELECT group_id FROM組UNION SELECT 1 FROM WHERE FALSE' - 是否有一些地方根據前一個查詢返回的行數選擇1? – ChicagoSky 2014-09-20 00:34:29
您可以將存儲過程添加到帖子中。 – Bulat 2014-09-20 00:42:01