实现银行转账操作,先对表进行分析 账户信息表是少不了的,其次还需要一个记录转账操作的转账记录表
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 --提交事务
因为实际业务中存在各种各样的条件,比如跨行操作 所以我做的例子只限于很基本 的用存储过程加事务完成银行转账的一个步骤,给大家提供一个思路,具体的需要根据实际情况的不同进行添加修改条件