«Активный результат не содержит полей» с использованием 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), а затем выполнив третий запрос, чтобы удалить первую таблицу. Но я бы предпочел не прибегать к этому! :)