slq 变量问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 21:30:49
需要执行一个循环.每次循环生成一个临时表 , 表名要类似 tmpI,其中 I是循环计数器的值.而且每次还要引用前一个临时表的名(即第 i次循环时,要引用到 tmp(i-1).
应该如何实现???

while (@i<10)
begin

end
sql 临时表问题
需要执行一个循环.每次循环生成一个临时表 , 表名要类似 tmpI,其中 I是循环计数器的值.而且每次还要引用前一个临时表(即第 i次循环时,要引用到 tmp(i-1)).
应该如何实现???

while (@i<10)
begin
--create table #tmpI ?????
--select * from #tmp(I-1) ?????

end

ok,这个容易实现,以下代码通过测试
==============================================================

declare @i varchar(100),@j varchar(100),@sql varchar(1000)
set @i=1
set @sql='create table #tmp'+@i+'(id int,names varchar(100)) '--初始化第一张表
set @i=@i+1
while @i<10--循环得出其他表
begin
set @j=@i-1
set @sql=@sql+' select * into #tmp'+@i+' from #tmp'+@j+''
set @i=@i+1
end
print (@sql)
exec(@sql)

临时表不需要创建。
这么给你个例子吧,比如从table1里读取数据到临时表,然后再从临时表中取取数据出来
declare @strSelect varchar(500)
while @i<10
begin
@set @strSelect='select * into #temp'+i+'from table1'
exec (@strSelect)
@set @strSelect='select * from #temp'+i
end

临时表用动态时,所有调用部份都需要用动态..
改为全局临时表

declare @i nvarchar(100)
set @i=10
while (@i<10)
begin
exec('create table ##tmp'+@i+'(ID int)')
exec('select * from