0
我基本上試圖通過使用sp_msforeachdb找出存在於SQL SERVER中的所有數據庫的所有表。如何使用臨時表變量(例如@temp)來保存sp_msforeachdb的結果
如果我寫exec sp_msforeachdb 'select "?" AS DatabaseNames,* from [?].sys.tables'
我會得到的結果很好,但每一個數據庫,一個單獨的記錄集將被創建。
現在,如果我用
CREATE TABLE #DBINFO
(
DbName NVARCHAR(255)
,ObjectID NVARCHAR(255)
)
INSERT INTO #DBINFO
exec sp_msforeachdb 'select "?" AS DatabaseNames,ObjectID from [?].sys.tables'
SELECT * FROM #DBINFO
這工作得很好。
但是,如果我這樣做
Declare @DBINFO Table(DbName NVARCHAR(255),ObjectID NVARCHAR(255))
INSERT INTO @DBINFO
exec sp_msforeachdb 'select "?" AS DatabaseNames,ObjectID from [?].sys.tables'
SELECT * FROM @DBINFO
它不接受
而且,如果我做
;With CTE AS
(
exec sp_msforeachdb 'select "?" AS DatabaseNames,* from [?].sys.tables'
)
Select * from CTE
,它會拋出錯誤(目前我DONOT記得)。
問題是
1)是否有可能使用表變量
2)是否有可能得到使用CTE做同樣的事情做同樣的東西?
SQL Server 2005的
感謝