尽管在将变量传递给 sp_executesql 时将变量声明为“游标”类型,但我收到错误“操作数类型冲突:nvarchar 与游标不兼容”。
declare CURSOR_TO_PASS cursor for... --a simple select statement
--cursor opened, values obtained, etc...
declare @item nvarchar(5);
declare @seqno int;
--@item and @seqno populated
declare @sql nvarchar(400) = N'update MYTABLE set Survey' + cast(@seqno as nvarchar(2)) + N' = @itemvalue where current of @sc';
exec sp_executesql @sql, N'@itemvalue nvarchar(5), @sc cursor', @itemvalue = @item, @sc = CURSOR_TO_PASS;
我不知道出了什么问题,因为我已经将@sc 声明为游标,而 CURSOR_TO_PASS 是一个游标,我在调用 sp_executesql 时将其分配给@sc。那么,是否可以将游标传递给 sp_executesql?