日期:2014-05-18  浏览次数:20424 次

请教一个关于游标中动态SQL的问题?
SQL code

create procedure test
@fld varchar(100)
as
declare @sql nvarchar(500)
set @sql='declare xyz cursor fast_forward for select ' + @fld + ' from abc'
exec sp_executesql @sql
open xyz
fetch next from xyz into ....(@fld是所要查询的列的字符串,是未知个数的,这里应该怎么写呢?)...
............
......



------解决方案--------------------
不能这样做的.
动态执行的内容,与当前程序不在同一个连接中,你在动态定义的游标,是无法到当前过程中去调用的.

如果 abc 中的列不是很多,你可以考虑用 if else 结构来处理.
其实游标的功能很多情况下都可以用其他语句来实现的.