我有一組查詢,在不同的表中添加4個不同的列,名稱有些類似。因此,我通過在一組動態sql中調用INFORMATION_SCHEMA.COLUMNS來創建所有4個查詢的聯合,這些動態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如果按批處理,您的意思是複製輸出並直接運行,那麼我無法這樣做,因爲表名在不同的數據庫中有所不同。 –