Создание оператора SQL на основе существующих полей таблицы - PullRequest
0 голосов
/ 20 сентября 2019

Имея таблицу, заполненную базами данных и именами таблиц, возможно ли создать динамический запрос на основе этих полей?Примерно так:

DECLARE @mysearch NVARCHAR(MAX)= 'SELECT db_name, tbl_name FROM UserConfig where ID = 1';

SELECT * FROM [db_name]..[tbl_name]

Быть имя_базы и имя_таблицы значения результата запроса @ mysearch .

Для уточненияимена баз данных и таблиц, из которых мне нужно выбрать данные, находятся в таблице, а не жестко закодированы.

Пример:

SELECT * FROM MYDB..MyTable

Но «MYDB» и «MyTable» - это значения, хранящиеся где-то еще.

Спасибо.

1 Ответ

1 голос
/ 20 сентября 2019

Я много читаю по строкам, но вы на самом деле после этого?

DECLARE @SQL nvarchar(MAX);
DECLARE @CRLF nchar(2) = NCHAR(13) + NCHAR(10);

SELECT @SQL = N'SELECT *' + @CRLF +
              N'FROM ' + QUOTENAME(db_name) + N'.dbo.' + QUOTENAME(tbl_name) + N';'
FROM UserConfig
WHERE ID = 1;

EXEC sp_executesql @SQL;

Это предполагает , что одна строка будет возвращена дляодно значение ID в таблице UserConfig.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...