我想创建一个动态脚本来创建多个表。下面是一个示例脚本来创建动态表
--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