我有一个存储过程,它创建一个临时表(#test),用另一个表中的数据填充它,在这个时态表上运行3选择并删除它.
原始表大于20 GB,3个SELECT语句在原始SP上包含许多不同的条件.
我正在使用SQLSRV从PHP执行SP但是我只能设法检索2个第一个结果集.
如果我从MSSMS运行SP,它将运行得很好,并按预期返回3个结果集.但是从PHP它只会返回2(尝试每个组合).
不确定这是否是驱动程序sqlsrv_fetch_array或sqlsrv_next_result的问题.
SP的示例(选择语句太大,所以我只是恢复它们):
CREATE PROCEDURE sp_transfers
@dt date,
@campaign varchar(16)
AS
BEGIN
CREATE TABLE #test ( [column definitions...] )
BEGIN
INSERT INTO #test SELECT * FROM sometable WHERE dt = @dt AND campaign = @campaign
SELECT * FROM #test ...
SELECT * FROM #test ...
SELECT * FROM #test ...
DROP TABLE #test
END
Run Code Online (Sandbox Code Playgroud)
现在从PHP开始,这是我的测试代码:
$q = sqlsrv_query($conn,"EXEC sp_transfers @dt='2013-10-01',@campaign='1234'");
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 1st resultset
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as …Run Code Online (Sandbox Code Playgroud)