«Активный результат не содержит полей» с использованием PDO с MS SQL

Я нахожусь в процессе преобразования некоторых старых страниц PHP для использования PDO.

Ниже приведены два упрощенных запроса (не мои настоящие запросы), чтобы помочь понять проблему, с которой я столкнулся ...

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

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

Приведенный выше запрос выдает ошибку, описанную в заголовке (более полно он выдает «Неустранимая ошибка: необработанное исключение« PDOException »с сообщением« SQLSTATE [IMSSP]: активный результат для запроса не содержит полей ».")

Если я изменю запрос следующим образом ...

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

Похоже, что это позволяет обойти ошибку, но эта версия запроса ужасно неэффективна, поскольку, по-видимому, она запускает поддельный запрос для каждого сравнения полей в другом запросе.

Есть ли способ заставить первую форму (которая создает временную таблицу один раз) работать с PDO?

Он работал нормально на старой странице, которая использовала mssql.

РЕДАКТИРОВАТЬ: Я знаю, что, вероятно, могу сделать это «беспорядочно», создав настоящую таблицу, запустив ее в php, затем выполнив второй запрос (в отдельном вызове php), а затем выполнив третий запрос, чтобы удалить первую таблицу. Но я бы предпочел не прибегать к этому! :)

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

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