首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么使用存储过程返回值

2013-03-01 
如何使用存储过程返回值第一步:创建一个可以返回值 的存储过程 createproc [brpbomson] @cinvcode varchar

如何使用存储过程返回值
第一步:创建一个可以返回值 的存储过程 
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比较好。
[解决办法]
用游标吧,一条一条更新,定义变量将存储过程的返回值保存下来,再对数据进行更新操作

热点排行