„Aktywny wynik nie zawiera pól” przy użyciu PDO z MS SQL

Jestem w trakcie konwertowania niektórych starych stron PHP do korzystania z PDO.

Poniżej znajdują się dwa uproszczone zapytania (nie moje rzeczywiste zapytania), które pomogą zrozumieć problem, który mam ...

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

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

Powyższe zapytanie zgłasza błąd opisany w tytule (bardziej kompletnie zgłasza błąd krytyczny: nieprzechwycony wyjątek „PDOException” z komunikatem „SQLSTATE [IMSSP]: aktywny wynik dla zapytania nie zawiera żadnych pól.”)

Jeśli zmienię takie zapytanie ...

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);

Wydaje się, że omija ten błąd, ale ta wersja kwerendy jest strasznie nieefektywna, ponieważ wydaje się uruchamiać kuszące zapytanie dla każdego porównania pojedynczego pola w drugim zapytaniu.

Czy istnieje sposób, aby pierwszy formularz (który tworzy tabelę tymczasową) działał z PDO?

Działało dobrze na starej stronie, która używała mssql.

EDYTOWAĆ: Wiem, że prawdopodobnie mogę to zrobić w „chaotyczny” sposób, tworząc prawdziwą tabelę, uruchom ją w php, następnie uruchom drugie zapytanie (w oddzielnym wywołaniu php), a następnie uruchom trzecie zapytanie, aby usunąć pierwszą tabelę. Ale wolałbym nie uciekać się do tego! :)

questionAnswers(5)

yourAnswerToTheQuestion