如何在定义游标的时候使用动态sql语句?

declare @qa nvarchar(200)
declare @i int
declare @sql nvarchar(255)
set @i = 1
while @i <= 5 
begin
  set @sql = 'declare cur cursor for 
               select q' + convert(nvarchar(2), @i) + ' from ImportSurveyInfo'
   set @i = @i + 1
   exec(@sql)
 open cur
 fetch cur into @qa
 select @qa
 close cur
 deallocate cur
end






declare
  type MyCursor is REF CURSOR ;
  cur MyCursor;
  rst xx%rowtype;
  sqlstr varchar2(400);
  tablename varchar2(20);
begin
  tablename := 'xx';
  sqlstr := 'select * from ' || tablename;
  
  --下面这句就是你想要的 
  open cur for sqlstr;
  
  loop
  fetch cur into rst;
  exit when cur%notfound;
    --做你要做的
  end loop;  
end;

猜你喜欢

转载自blog.csdn.net/yuhaiyang_1/article/details/80019007
今日推荐