Запрос таблицы для списка, а затем использовать этот список в операторе выбора - PullRequest
0 голосов
/ 26 февраля 2019

Допустим, у меня есть таблица, которая содержит список других таблиц

Declare @MyList varchar(max)
@MyList = Select tablename from ListofTables

возвращает список из 50 имен таблиц

Как я могу использовать этот список имен таблиц в одномвыбрать заявление?Я думал, что цикл или что-то может быть?

For each tablename in @MyList
Select * from tablename

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете попробовать следующий подход:

-- Table
CREATE TABLE #ListOfTables (
   [TableName] varchar(max)
)
INSERT INTO #ListOfTables
   ([TableName])
VALUES
   ('Table1'),
   ('Table2'),
   ('Table3'),
   ('Table4'),
   ('Table5'),
   ('Table6'),
   ('Table7'),
   ('Table8'),
   ('Table9')

-- Statement
DECLARE @stm nvarchar(max)
SET @stm = N''

SELECT @stm = @stm + N'SELECT * FROM ' + QUOTENAME([TableName]) + N'; '
FROM #ListOfTables
/* 
-- Or using FOR XML PATH
SELECT @stm = (
   SELECT CONCAT(N'SELECT * FROM ', QUOTENAME([TableName]), N'; ')
   FROM #ListOfTables
   FOR XML PATH('')
)    
*/

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