"Das aktive Ergebnis enthält keine Felder" mit PDO mit MS SQL

Ich bin gerade dabei, einige alte PHP-Seiten für die Verwendung von PDO zu konvertieren.

Nachfolgend finden Sie zwei vereinfachte Abfragen (nicht meine eigentlichen Abfragen), um das Problem besser zu verstehen ...

SELECT afield INTO #temptable FROM atable WHERE anotherfield = 'somevalue';

SELECT afield,anotherfield,onemorefield FROM atable 
WHERE afield NOT IN (SELECT * FROM #temptable);

Die obige Abfrage löst den im Titel beschriebenen Fehler aus (vollständiger "Schwerwiegender Fehler: Nicht erfasste Ausnahme 'PDOException' mit der Meldung 'SQLSTATE [IMSSP]: Das aktive Ergebnis für die Abfrage enthält keine Felder.'")

Wenn ich die Abfrage so ändere ...

with (SELECT afield INTO #temptable FROM atable 
WHERE anotherfield = 'somevalue') AS temptable;

SELECT afield,anotherfield,onemorefield FROM atable 
where afield NOT IN (SELECT * FROM temptable);

Dies scheint den Fehler zu umgehen, aber diese Version der Abfrage ist schrecklich ineffizient, da sie die verlockende Abfrage für jeden einzelnen Feldvergleich in der anderen Abfrage auszuführen scheint.

Gibt es eine Möglichkeit, das erste Formular (das eine temporäre Tabelle einmal erstellt) mit PDO arbeiten zu lassen?

Es funktionierte gut auf der alten Seite, die MSSQL verwendet.

BEARBEITEN: Ich weiß, dass ich dies wahrscheinlich auf "chaotische" Weise tun kann, indem ich eine echte Tabelle erstelle, sie in PHP ausführe, dann die zweite Abfrage (in einem separaten PHP-Aufruf) und dann eine dritte Abfrage zum Löschen der ersten Tabelle ausführe. Aber darauf müsste ich lieber nicht zurückgreifen! :)

Antworten auf die Frage(5)

Ihre Antwort auf die Frage