机房重构(三)--存储过程的调试

          在机房的重构过程中,我们为了操作两个以上的表一般都用到了事务,写过存储过程但是我们一般都是写好了连上数据库,通过程序来调试,看存储过程是否正确.这样未免太麻烦了.作为一款成熟的软件SQL Server 怎么可能没有调试的机制呢?所以下面就是我的分享.

      让我们找一个存储过程,右击,选择执行存储过程如图

 

      然后会弹出这样的一个窗口,让你来传入参数,参数要与自己定义的相同

 

这里要填写的是我们存储过程中定义的参数,参数的类型要与存储过程中定义的一样,这样才不会出现异常,下面是我的存储过程

CREATE PROCEDURE [dbo].[PROC_SettleAccount]
-- 这里定义参数
@UserID varchar(20)
AS
--这里定义变量
declare @Initialcash money,@consumecash money ,@currentcash money,@addcash money,@cancelcash money,@remaincash money,
@date date,@time time,@oldcurrentmoney money
BEGIN
tran
select @Initialcash=SUM(initialcash),@consumecash=SUM(consumecash),@currentcash=SUM(currentcash) from Card_info where IsCheck='未结账'
select @addcash=SUM(addcash) from Recharge_info where IsCheck='未结账'
select @cancelcash=SUM(cancelcash) from CancelCard_info where IsCheck='未结账'
select top 1 @oldcurrentmoney=currentcash from DailyBill_info order by BillNo desc 
select @remaincash=remaincash from DailyBill_info
if(@remaincash is null)
set @remaincash=0
else
set @remaincash=@oldcurrentmoney
insert into DailyBill_info (RemainCash,RegisterCash,RechargeCash,ConsumeCash,CancelCardCash,CurrentCash,Date,time,Head)
values(@remaincash,@Initialcash,@addcash,@consumecash,@cancelcash,@currentcash,GETDATE(),GETDATE(),@UserID)
update CancelCard_info set IsCheck='结账' where IsCheck='未结账'
update Recharge_info set IsCheck='结账' where IsCheck='未结账'
update Card_info set IsCheck='结账' where IsCheck='未结账'
if @@ERROR<>0
begin
rollback tran
return 0
end
else
begin
commit tran
return 1
END



 

      返回值为1,则证明我的存储过程中事务已经执行完,进行了相应的修改,如果我们的存储过程有错误,那么就会提示出错误信息和位置,方便我们的调试.


评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值