小编use*_*368的帖子

SQLSRV和存储过程中的多个选择

我有一个存储过程,它创建一个临时表(#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)

php sql-server stored-procedures sqlsrv

4
推荐指数
1
解决办法
6617
查看次数

标签 统计

php ×1

sql-server ×1

sqlsrv ×1

stored-procedures ×1