У меня есть набор запросов для добавления 4 разных столбцов в разные таблицы с несколькими похожими именами. Итак, я сделал объединение всех 4 запросов, вызвав INFORMATION_SCHEMA.COLUMNS в наборе динамических sql, имеющих имена всех таблиц и для всех 4 столбцов. Теперь я хочу выполнить все эти запросы за один раз, не выполняя каждый запрос по одному. Итак, как я могу это достичь?Выполнение вывода sql-запроса напрямую
Это запрос, я сделал:
SELECT * FROM (SELECT
'IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =''' + TABLE_NAME + ''' AND COLUMN_NAME = ''FromDays'') ALTER TABLE '+ TABLE_NAME +' ADD FromDays varchar(50) NULL; ' AS qry
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%tbl_PPT_Query_Order%'
UNION ALL
SELECT
'IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =''' + TABLE_NAME + ''' AND COLUMN_NAME = ''ToDays'') ALTER TABLE '+ TABLE_NAME +' ADD ToDays varchar(50) NULL; ' AS qry
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%tbl_PPT_Query_Order%'
UNION ALL
SELECT
'IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =''' + TABLE_NAME + ''' AND COLUMN_NAME = ''FromDays_Top'') ALTER TABLE '+ TABLE_NAME +' ADD FromDays_Top varchar(50) NULL; ' AS qry
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%tbl_PPT_Query_Order%'
UNION ALL
SELECT
'IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =''' + TABLE_NAME + ''' AND COLUMN_NAME = ''ToDays_Top'') ALTER TABLE '+ TABLE_NAME +' ADD ToDays_Top varchar(50) NULL; ' AS qry
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%tbl_PPT_Query_Order%') x
Что заставляет вас запускать их один за другим в партии? – iamdave
@iamdave Если пакетный, вы имеете в виду копирование вывода и запуск напрямую, то я не могу этого сделать, потому что имена таблиц различаются в разных базах данных. –