mssql中update中批量使用存储过程执行结果

这里表A有3个字段 a,b,c
一个存储过程B可以接收2个参数返回一个整数
现在想把表A的c字段全部更新成B(a,b)的结果
能否不用游标?

如果是函数,那么返回值可以作为结果返回,那么就是类似这样的调用:

c=B(a,b),
update A set c=B(a,b);

如果是存储过程,那么返回值必然是使用out 参数返回的,那么只能类似这样调用:

B(a,b,out c)
显然是无法像上面的函数式的调用,只能用游标一行一行调用。
或者
在这个存储过程外面在加一个函数,在函数里面调用B,然后再像上面直接在sql理解直接调用。

大概意思:
function B1(a,b) return as int
is
c int;
call B(a,b,c);
return c;
end
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-24
update A
set c = B(a,b)
这样不就可以了吗
第2个回答  2014-03-24
可以不用游标
但是你要说清楚B是什么,a,b又是什么追问

B是存储过程
A表有三个字段
比如
a b c
1 2 0
1 3 0