第一步:创建一个可以返回值 的存储过程
create proc [brpbomson] @cinvcode varchar(50)
as
declare @dec3 decimal(18,4)
set @dec3=0
return @dec3
第二步:使用存储过程 返回值
UPDATE Ainventory
SET Ainventory.Dec3=exec brpbomson @cinvcode=Ainventory.cinvcode
FROM Cbom LEFT JOIN Ainventory ON Cbom.cinvcode=Ainventory.cinvcode
结果运行报错了,报错如下:
消息 156,级别 15,状态 1,第 2 行
在关键字 'exec' 附近有语法错误。
消息 170,级别 15,状态 1,第 2 行
第 2 行: '.' 附近有语法错误。
我第二步应该如何 修正语法错误 呢
------解决方案--------------------
用函数,不是用存储过程
create function [brpbomson] (@cinvcode varchar(50))
returns decimal(18,4)
as
begin
declare @dec3 decimal(18,4)
set @dec3=0
return @dec3
end
UPDATE Ainventory
SET Ainventory.Dec3=dbo.brpbomson(Ainventory.cinvcode)
FROM Cbom LEFT JOIN Ainventory ON Cbom.cinvcode=Ainventory.cinvcode
------解决方案--------------------
create proc [brpbomson]
@cinvcode varchar(50),@dec3 decimal(18,4) OUTPUT
AS
set @dec3=0
return @dec3
--调用
declare @var1 varchar(50),@var2 decimal(18,4)
set @var1='aa'
exec [brpbomson] @var1,@var2 OUTPUT
print @var2
------解决方案--------------------
一般存储过程返回值都是用来判断存储过程运行是否出错。像要输出结果(多个)的话还是用output比较好。
------解决方案--------------------
用游标吧,一条一条更新,定义变量将存储过程的返回值保存下来,再对数据进行更新操作