我想創建一個動態腳本來創建多個表。下面是一個示例腳本來創建動態表
--exec USP_Dynamic_tablescript
Create procedure USP_Dynamic_tablescript
as
DECLARE @SQLStmt nvarchar(3000)
DECLARE @table_name nvarchar(3000)
DECLARE @i int
set @i=1
while(@i<=3)
begin
set @table_name = '#tblSales' + convert(varchar(10),@i)
SET @SQLStmt = 'create TABLE ' + @table_name + '(' + ' CityId int , ' +
' SalesPersonId int , ' + ' SalesAmount numeric(10,2), ' +
' MetTarget nvarchar(2) ' + ') '+
' ON [PRIMARY] WITH (DATA_COMPRESSION = NONE)'
print @table_name
EXEC sp_executesql @SQLStmt
set @i = @i + 1
end
SELECT * from #tblSales1
INSERT INTO #tblSales1(CityId, SalesPersonId, SalesAmount, MetTarget)
VALUES (1, 101, 1650.00, 'Y')
我需要在這些臨時表上運行DML語句。
如果我嘗試,我得到以下錯誤。請幫助我瞭解範圍,表已成功創建,但我如何在其上運行DML操作。
消息208,級別16,狀態0,過程USP_Dynamic_tablescript,第31行
無效的對象名稱#tblSales1「。
您正在創建一個**動態查詢裏面**臨時表** * *只能在**動態查詢**會話中訪問**您無法在動態查詢外訪問它 – 2014-12-03 10:41:56
可能的重複[使用動態sql創建臨時表時出錯](http://stackoverflow.com/questions/9338963 /錯誤合使用創建-A-TEMP-表動態-SQL ) – AHiggins 2014-12-03 19:11:22
如果你想撤回你的問題,然後刪除它,但不要編輯文本,以便現有的答案與你的問題沒有關係。 – 2014-12-04 15:29:40