SQLSRV и множественный выбор в хранимой процедуре

У меня есть хранимая процедура, которая создает временную таблицу (#test), заполняет ее данными из другой таблицы, запускает 3 выбора для этой временной таблицы и удаляет ее.

Исходная таблица имеет размер более 20 ГБ, а 3 оператора SELECT содержат множество различных условий для исходного SP.

Я выполняю SP из PHP, используя SQLSRV, но мне удается только получить 2 первых набора результатов.

Если я запускаю SP из MSSMS, он будет работать нормально и вернет 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

Теперь из 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 expected - 2nd resultset
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); // EMPTY

Однако, хотя, если я попробую это, это работает:

sqlsrv_next_result($q);
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 2nd resultset
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); // OK - 3rd resultset shows up

То же самое с этой комбинацией:

sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 1st resultset
sqlsrv_next_result($q);
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); // OK - 3rd resultset shows up

Я что-то здесь не так делаю? Или есть способ получить 3 набора результатов из одного SP.

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос