Есть ли способ поместить результат запроса в память и сослаться на него в другом запросе?

Я сталкиваюсь с трудностями с PDO и соединением SqlSrv, которое использует общее табличное выражение для создания таблицы в памяти, на которую ссылается запрос, который должен произвести вывод запроса. Более подробно о проблеме можно прочитать в вопросе о том, что я разместил ранее сегодня: вопрос.

Скажи, у меня есть этот запрос:

-- app.use("Dummy Foo Bar Baz table")

/**
* The above line is a custom made syntax that lets me include
* common SQL parts I need often in different queries.
*/

select * from @table

С помощью preg_match_all Я ищу все -- app.use("(.*)") обыкновения. В фоновом режиме это просто проверяет таблицу с предопределенными запросами для столбца имени с заданным именем и включает этот SQL в запрос, который будет выполнен. В этом случае SQL для «Dummy Foo Bar Baz table» выглядит так:

declare @table table(id int, name varchar(255))

insert into @table values (1, 'foo')
insert into @table values (2, 'bar')
insert into @table values (3, 'baz')

Полный запрос к базе данных SQL Server:

declare @table table(id int, name varchar(255))

insert into @table values (1, 'foo')
insert into @table values (2, 'bar')
insert into @table values (3, 'baz')

select * from @table

Когда я запускаю это, я получаю The active result for the query contains no fields ошибка. Запрос отлично работает в SQL Server Management Studio. Я полагаю, что это вызвано тем, что SSMS внутренне обрабатывает или сохраняет результат CTE в памяти, а PDO не поддерживает это или, по крайней мере, игнорирует это на данный момент.

Альтернативный подход к получению результата из вышеуказанного запроса

Поэтому мне было интересно, можно ли его сломать, не перестраивая интерпретатор SQL, а выполнив все app.use(..) и сохранить их в памяти (или в месте, где он находится, чтобы я мог ссылаться на него) и использовать их для «окончательного» запроса select * from @table,

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

Можно ли это сделать?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]