您的位置:首页 > 数据库

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

2011-10-24 11:14 696 查看
这样写是错的


declare @qa nvarchar(200)


declare @i int


declare @sql nvarchar(255)




set @i = 1


while @i <= 5


begin


set @sql = 'select q' + convert(nvarchar(2), @i) + ' from ImportSurveyInfo'


set @i = @i + 1


declare cur cursor for exec @sql


open cur


fetch cur into @qa


select @qa


close cur


deallocate cur


end



应该这样


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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: