存储过程实现银行转账的简易操作

实现银行转账操作,先对表进行分析    账户信息表是少不了的,其次还需要一个记录转账操作的转账记录表

eg:

 create database RiKao1019   --创建数据库

 use RiKao1019  --使用数据库

--创建账户信息表

create  table Infor
(
 Id int primary key identity, --主键自增Id
 Number varchar(19),   --银行卡号
 Pass  varchar(20), --用户密码
 Balance  decimal    --余额
)

--创建转账记录表

create table  TransferInfor
(
 Tid int primary key identity,  --主键自增Id
 Ttype varchar(4),  --转账类型,判断是入账还是出账
 Operational  decimal, --转账金额
 Ttime datetime --转账时间
)

--创建转账存储过程

if OBJECT_ID('p_transfer','p') is not null       --判断该存储过程是否存在
 drop proc p_transfer         
    go
 
     create proc p_transfer
        @out_Number  varchar(20),--转出账号
        @in_Number varchar(20), --转入账号
        @Balance decimal(18,2), --账户金额
        @Balance1 decimal(18,2), --转账金额
        @Ttime datetime --转账时间
 
 as
 begin try
 
      select @Balance=Balance from Infor where Number=@out_Number --查询转出的金额
     if @Balance>=@Balance1    --判断账户余额是否大于转账金额  是转账成功  否  转账失败
          begin
                  update Infor set Balance=Balance-@Balance1 where Number=@out_Number  --付款账户减少了转账金额
                  update Infor set Balance=Balance+@Balance1  where Number=@in_Number  --收款账户增加了转账金额
                  insert into  TransferInfor values ('转出',@Balance1,@Ttime)         --对数据记录表执行操作
                  print'转账成功'
           end  
  else
           begin
                  print'余额不足'
           end
 end  try
 begin catch
     if(@@trancount>0) --代表提交事务的数量
            declare @message varchar(50)
            set @message=(select ERROR_MESSAGE() as message)
            print @message
      rollback tran --回滚事务
      end catch
   if(@@TRANCOUNT>0)
    commit tran --提交事务

   因为实际业务中存在各种各样的条件,比如跨行操作    所以我做的例子只限于很基本 的用存储过程加事务完成银行转账的一个步骤,给大家提供一个思路,具体的需要根据实际情况的不同进行添加修改条件

posted @ 2017-10-19 14:55  大琳子  阅读(1701)  评论(0编辑  收藏  举报