T-SQL: выбор данных из всех таблиц, возвращаемых с помощью INFORMATION_SCHEMA.TABLES - PullRequest
0 голосов
/ 27 марта 2019

Мне нужно извлечь данные из всех таблиц, которые были возвращены с помощью следующего запроса:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE 'ERP_%'

Я пытался выполнить следующий запрос, но безуспешно:

SELECT * 
FROM 
    (SELECT TABLE_NAME 
     FROM INFORMATION_SCHEMA.TABLES 
     WHERE TABLE_NAME LIKE 'ERP_%')
WHERE STATUS = 'XXX'

Просмотржду вашей помощи.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Попробуйте этот запрос, используя динамический SQL:

declare @sql varchar(max) = '';

select @sql = @sql + 'select * from ' + TABLE_NAME + ' where [status] = ''XXX''; '
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME like 'ERP_%';

exec(@sql);
0 голосов
/ 27 марта 2019

Вы можете попытаться сгенерировать динамический оператор SQL и выполнить его:

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

-- Dynamic SQL
SELECT @stm = (
   SELECT CONCAT(
        N'SELECT * FROM ',
        QUOTENAME(TABLE_NAME),
        N' WHERE [STATUS] = ''XXX''; '
   )
   FROM INFORMATION_SCHEMA.TABLES 
   WHERE TABLE_NAME LIKE 'ERP_%'
   FOR XML PATH('')
)

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