0
我試圖運行多個SELECT
命令,它們選擇相同的列集合,但是來自不同的數據庫,並且希望只需將列列出一次作爲變量,然後將其稱爲SELECT 。基於聲明列表的SELECT選擇
它是如何完成當前,但要少得多列&的SELECT:
SELECT Column1
,Column2
,Column3
FROM [db1]
--Processes
SELECT Column1
,Column2
,Column3
FROM [db2]
--Processes
SELECT Column1
,Column2
,Column3
FROM [db3]
--Processes
想法是什麼,我希望能得到工作的:
DECLARE @ListofColumns VARCHAR;
SET @ListofColumns = 'Column1,Column2,Column3';
SELECT @ListofColumns
FROM [db1]
--Processes
SELECT @ListofColumns
FROM [db2]
--Processes
SELECT @ListofColumns
FROM [db3]
--Processes
你將不得不使用動態SQL來做到這一點,那會代碼複雜化。 –
動態SQL(EXEC/sp_executeSQL)是執行此操作的唯一方法,對象標識符不能存儲在變量中。 –
如果每個查詢的結構完全相同,則可以使用(未記錄的)'sp_MSforeachdb'和'sp_MSforeachtable'存儲過程以及恰當的過濾器來定位對您很重要的數據庫和表。但是在這種情況下,我首先會質疑爲什麼同一個「類型」的數據存儲在多個地方 - 部分* data *反而變成了*元數據*(這裏成爲數據庫名稱)? –