银行转账与事务处理、create procedure语句

http://blog.csdn.net/chimomo/archive/2010/10/21/5957231.aspx

关于create procedure的说明在上述网页中有很详细的说明。

下面程序为个人注释版。

create procedure TransferMoney
{
    @FromAccountNo varchar(50),-- 转出账号
    @ToAccountNo varchar(50),--转入账号
    @MoneyCount money--转账金额
}
as --(as后)开始数据库处理语句块
--判断账号是否存在
if exists (select 1 from 帐户表 where 账号 = @FromAccountNo)
begin
    if exists (select 1 from 帐户表 where 账号 = @ToAccountNo)
    begin   --转出账户和转入账户都存在,则开始转账
        --判断转出金额是否大于当前余额
        if (select 当前余额 from 帐户表 where 账号 = @FromAccountNo) >= @MoneyCount
        begin
            --开始转账
            begin transaction --事务转账开始
            insert into [存取记录表] ([账号],[存取类型], [存取金额]) values(@FromAccountNo, -1,@MoneyCount)--(-1)代表存取类型
            if @@error <> 0
            begin
                rollback transaction--发生错误则回滚事务,无条件退出l
                return
            end
            insert into [存取记录表] ([账号],[存取类型], [存取金额]) values(@ToAccountNo, 1,@MoneyCount)
            if @@error <> 0
            begin
                rollback tran
                return
            end
            commit transaction --两条语句都完成,提交事务
        end
        else   
            raiserror ('转账金额不能大于该账号的余额',16,1)
    end
    else
    raiserror ('转入账号不存在',16,1)

end
else
    raiserror ('转出账号不存在',16,1)
-------------未完---------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值