我需要一个存储过程中的多个结果集示例:
DROP PROCEDURE IF EXISTS my_sp;
CREATE PROCEDURE my_sp(
IN wanted VARCHAR(255)
)
BEGIN
SET @results = 0;
SET @wanted = wanted;
SET @query = "
SELECT * FROM table1
WHERE my_column = ?
";
PREPARE stmt FROM @query;
EXECUTE stmt USING @wanted;
SELECT FOUND_ROWS() INTO @results;
DEALLOCATE PREPARE stmt;
IF( @results < 5 ) THEN
SET @query = "
SELECT * FROM table2
WHERE my_column = ?
";
PREPARE stmt FROM @query;
EXECUTE stmt USING @wanted;
DEALLOCATE PREPARE stmt;
END IF;
END;
在我的本地主机中,我具有MySQL 5.7和PHP 7.1,具有PDO并可以按预期工作:我可以看到多个结果集,例如:
do {
$results = $conn->fetchAll(PDO::FETCH_ASSOC);
print_r($results); //here I can see multiple results
} while ($conn->nextRowset());
问题:
我的主机具有MySQL 5.6版本和PHP 7.1,但是我只有一个结果集。
因此,我认为未启用CLIENT_MULTI_RESULTS
我尝试使用SHOW VARIABLES
,但没有使用CLIENT_MULTI_RESULTS
,结果>]
我需要从一个存储过程中获得多个结果集,例如:如果存在my_sp,则执行DROP PRODEDURE。创建过程my_sp(IN想要的VARCHAR(255))开始设置@results = 0; SET @wanted = ...
根据手册LIENT_MULTI_RESULTS应启用