【发布时间】:2015-01-31 20:46:56
【问题描述】:
我正在尝试创建一个动态脚本来创建多个表。下面是一个示例
--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”无效。
【问题讨论】:
-
您正在 Dynamic 查询 中创建一个 Temp 表,该表只能在 Dynamic Query 会话中访问无法在 Dynamic Query 之外访问它
-
如果您想撤回您的问题,请将其删除,但不要编辑文本,以便现有答案与您的问题无关。
标签: sql sql-server tsql stored-procedures temp-tables