L oop все таблицы и Exe c сохраненная процедура - PullRequest
0 голосов
/ 26 мая 2020

У меня есть десятки таблиц (MS SQL) и что бы внедрить на все триггеры для аудита. Было бы много вызовов EXE C. Как l oop через все таблицы и exe c сохраненный pro c?

EXEC [dbo].[_create_audit_trigger]  @TableName = N'City'

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Вы ищете

DECLARE @SQL NVARCHAR(MAX);

SELECT @SQL = STRING_AGG( 
                         CAST(CONCAT('EXEC [dbo].[_create_audit_trigger]  @TableName = N''', 
                                QUOTENAME(S.Name), 
                                '.', 
                                QUOTENAME(T.Name), 
                                N''''
                               ) AS NVARCHAR(MAX)), 
                        ';')
FROM Sys.Tables T
JOIN Sys.Schemas S ON T.Schema_Id = S.Schema_Id;

SELECT @SQL; -- EXEC
-- EXEC sp_executesql @SQL;

db <> fiddle

1 голос
/ 26 мая 2020
SELECT 'EXEC [dbo].[_create_audit_trigger]  @TableName = N''' + QUOTENAME(schemas.name) + '.' + QUOTENAME(tables.name) + N''''
FROM sys.tables
INNER JOIN sys.schemas ON tables.schema_id = schemas.schema_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...