SQLSRV und mehrere auswählt, die in der Gespeicherten Prozedur

Ich habe eine Gespeicherte Procedured, die erstellt eine temporäre Tabelle (#test), füllt es mit Daten aus einer anderen Tabelle, läuft 3 wählt auf diese zeitliche Tisch und lässt es.

Der ursprünglichen Tabelle, es ist über 20 GB groß und die 3 SELECT-Anweisungen enthalten, die eine Menge von verschiedenen Bedingungen auf die original SP.

Ich bin der Ausführung der SP von PHP mit SQLSRV kann ich jedoch nur zu verwalten, abzurufen, die für die ersten 2 Ergebnis Sätze.

Wenn ich den SP von MSSMS läuft es ganz gut und gibt den 3 resultsets als erwartet. Aber von PHP wird es gerade wieder 2 (versuchte jede Kombination).

Nicht sicher, ob dies ein problem mit dem Treiber, sqlsrv_fetch_array oder sqlsrv_next_result.

Beispiel der SP (die select-Anweisungen sind zu groß, also werde ich einfach fortsetzen, Sie):

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

Nun von PHP-das ist mein test-code:

$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

Aber obwohl, wenn ich versuchen, das es funktioniert:

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

Gleiche Sache mit dieser Kombination:

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

Mache ich etwas falsch hier? Oder gibt es eine Möglichkeit zum abrufen der 3 resultsets aus einer einzelnen SP.

Vielen Dank im Voraus.

InformationsquelleAutor user2844368 | 2013-10-03
Schreibe einen Kommentar