У меня есть скалярная функция, которая возвращает запрос. Скалярная функция должна возвращать сам запрос, а не его «результаты», поскольку использует динамический SQL, а переменные используются как имена столбцов и имена таблиц.Выполнение запроса, возвращаемого из скалярной функции
Итак, у меня есть что-то вроде этого:
SELECT t.id,
dbo.queryToExecute(t.id, t.ColumnToFetch, t.TableToFetchFrom) QueryToExecute
FROM Table t
который возвращает
| ID | QueryToExecute
| 1 | SELECT ColumnName1 FROM Table1 WHERE id = 1
| 2 | SELECT ColumnName2 FROM Table2 WHERE id = 2
В то время как "QueryToExecute" возвращает единственное значение. Я хочу сделать что-то вроде:
SELECT t.id,
EXEC(dbo.queryToExecute(t.id, t.ColumnToFetch, t.TableToFetchFrom)) ExecutedQuery
FROM Table t
Так что набор результатов будет:
| ID | ExecutedQuery
| 1 | Jacob
| 2 | Sarah
Как я могу это сделать?
У меня уже есть хранимая процедура, которая выполняет задание, когда мне нужно запускать индивидуально, но я хотел иметь то же самое на скалярной функции, чтобы иметь возможность встраивать подвыборы в более сложные запросы.
Спасибо!
У меня есть 2 проблемы с этим: 1. Я хочу получить выполненный запрос вместе с id (другой столбец). 2. Теперь я получаю набор результатов для каждой строки в таблице. Я хочу получить единый результирующий набор со всеми идентификаторами и их выполненными запросами. – noamyg
Показать результаты, которые вам нужны – gofr1
Я отредактировал вопрос с нужной выводом, спасибо – noamyg