我在嘗試製作一些SQL腳本,它將輸出大型數據庫中的所有表名,以及每個字段和記錄的數量以及字段名稱的列表。這將使我們能夠將注意力集中在具有數據的表格上,並查找與不同表格匹配的字段名稱,這可能是適合連接的地方。爲sp_executesql聲明輸出參數
爲此,我試圖編寫動態SQL,可以遍歷所有表。但是我一直無法得到sp_executesql來產生我可以插入到我的表變量中的輸出。下面是我到目前爲止已經編寫的代碼:
USE MITAS_TEST;
DECLARE @TablesAbstract TABLE(
TableName VARCHAR(50),
NumberOfFields INT,
NumberOfRecords INT
);
DECLARE @NumberOfRowsCounted INTEGER;
SET @NumberOfRowsCounted = 0;
DECLARE @RecSql NVARCHAR(500);
SET @RecSql = 'EXECUTE(''SELECT @NumberOfRows = COUNT(*) FROM ''[email protected])';
DECLARE @ParmDefinition NVARCHAR(100);
SET @ParmDefinition = '@TableName NVARCHAR(100), @NumberOfRows INTEGER OUTPUT';
DECLARE @TableN NVARCHAR(100);
SET @TableN = 'MITAS_TEST.dbo.AP500';
EXECUTE sp_executesql @RecSql,
@ParmDefinition,
@TableName = @TableN,
@NumberOfRows = @NumberOfRowsCounted OUTPUT;
我收到以下錯誤:
Msg 137, Level 15, State 1, Line 1
Must declare the scalar variable "@NumberOfRows"
我還以爲它足以在@ParmDefinition
場(基於源在此,申報@NumberOfRows
:https://technet.microsoft.com/en-us/library/ms188001(v=sql.90).aspx )。我究竟做錯了什麼?有沒有更好的辦法?