sql的存储过程问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 02:44:00
userinfo表中有id(int),name(varchar(20)),balance(int)三个字段
balance字段设置了balance>0约束

表中内容
id name balance
1 小王 100
2 小张 50

创建一个转账存储过程,
create proc exchange
@money int,
@from int,
@to int,
@num int output
as
declare @result int
set @result = 0
begin transaction--开始事务
update userinfo set balance=balance+@money where id=@to
set @result =@result+@@error
set @num=@num+@@rowcount

update userinfo set balance=balance-@money where id=@from
set @result =@result+@@error
set @num=@num+@@rowcount

if @result=0
commit transaction--提交事务
else
rollback transaction--回滚事务

--执行语句
declare @num int
set @num=0
exec exchange 500,1,2,@num output
print @num

问题是:为什么不管执行时@money赋值500或者10时 ,最后打印的@num值都是2 ?

个人认为set @@rowcount是将set @result =@result+@@error这

按照你的给的句子,执行出来的都是负值。。。。

是对还是错,不能执行调试。
建议:
在换几个值分别试试,我觉得你输得有道理,但不能排除参数传递是否有错误!
检查参数传递的时候是否有误!