gpt4 book ai didi

tsql - 是否可以将游标变量传递给 sp_executesql?

转载 作者:行者123 更新时间:2023-12-04 06:20:25 24 4
gpt4 key购买 nike

尽管在将变量传递给 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?

最佳答案

发布此内容后不久我就找到了解决方案。实际上可以传递游标变量。只需要一个中间步骤,您必须将光标分配给“光标变量”,如下所示:http://msdn.microsoft.com/en-us/library/ms190028.aspx “游标可以通过以下两种方法之一与游标变量相关联:”,这两种方法都需要一个初始的、基本的游标变量声明,如“DECLARE @MyVariable CURSOR;”。

所以我将这些行添加到我的代码中:

declare @cursorvariable cursor;
set @cursorvariable = CURSOR_TO_PASS;

然后我改了 @sc = CURSOR_TO_PASS@sc = @cursorvariable ,而且效果很好。

关于tsql - 是否可以将游标变量传递给 sp_executesql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com