declare @tmpSql varchar(8000),@tbname varchar(50),@tbfield varchar(50),@chnname varchar(50)
set @tmpSql='select 'declare OpenSql scroll cursor
for
select tbname,tbfield,chnname
from aa
order by serialno
open OpenSQl
fetch first from OpenSQl into @tbname,@tbfield,@chnname
while @@fetch_status=0
begin
Set @tmpSql=@tmpSql+@tbfield+' As '+@chnname+','
fetch next from OpenSql into @tbname,@tbfield,@chnname
end
Set @tmpSql=@tmpSql+@tbfield+' As '+@chnname
close OpenSql
deallocate OpenSql
--Set @tmpSql=SubString(@tmpSql,1,len(@tmpSql)-1)+' from '+@tbname --
print @tmpSqlexec (@tmpSql)
set @tmpSql='select 'declare OpenSql scroll cursor
for
select tbname,tbfield,chnname
from aa
order by serialno
open OpenSQl
fetch first from OpenSQl into @tbname,@tbfield,@chnname
while @@fetch_status=0
begin
Set @tmpSql=@tmpSql+@tbfield+' As '+@chnname+','
fetch next from OpenSql into @tbname,@tbfield,@chnname
end
Set @tmpSql=@tmpSql+@tbfield+' As '+@chnname
close OpenSql
deallocate OpenSql
--Set @tmpSql=SubString(@tmpSql,1,len(@tmpSql)-1)+' from '+@tbname --
print @tmpSqlexec (@tmpSql)
while @@fetch_status=0
begin
Set @tmpSql=@tmpSql+@tbfield+' As '+@chnname+','
fetch next from OpenSql into @tbname,@tbfield,@chnname
end
set @tmpSql=left(@tmpSql,len(@tmpSql)-1)--去掉最后一个逗号
...
set @tmpSql='select 'select @tmpSql=@tmpSql+tbfield+' '+chnname+',' from aa order by serialnoset left(@tmpsql,len(tempsql)-1)
print @tmpSql即可,不要游标
fetch next from 游标名 into 变量名
while @@fetch_status=0
begin.....
fetch next from 游标名 into 变量名
end
当@@fetch_status=0 时后面还有记录
当@@fetch_status<>0时游标到了最后一行的后面。