概述
转账存储过程可参考以下代码逻辑:
USE [数据库名]
GO
/****** Object:
StoredProcedure [dbo].[SP_TransferMoney]
Script Date: 2018/9/25 8:25:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_TransferMoney]
@userId INT,--操作人
@fromMemberCardId VARCHAR(64),--转账人的卡号
@toMemberCardId VARCHAR(64),--收款人的卡号
@transferMoney DECIMAL,--转账金额
@remark NVARCHAR(128),--备注
@errorMsg NVARCHAR(128) OUTPUT--错误消息
AS
DECLARE @formId INT--转账人的主键Id
DECLARE @toId INT --收款人主键Id
--1.转账人的会员卡是否存在
IF ( SELECT COUNT(*) FROM dbo.MemCards WHERE MC_CardID=@fromMemberCardId)<=0-- 如果结果小于0说明转账人会员卡不存在
BEGIN
SET @errorMsg='转账人的会员卡不存在';
RETURN;
END
SELECT @formId=MC_ID FROM dbo.MemCards WHERE MC_CardID=@fromMemberCardId --对转账人的主键Id赋值
--2.收款人的会员卡是否存在
IF ( SELECT COUNT(*) FROM dbo.MemCards WHERE MC_CardID=@toMemberCardId)<=0-- 如果结果小于0说明收款人会员卡不存在
BEGIN
SET @errorMsg='收款人的会员卡不存在';
RETURN;
END
SELECT @toId=MC_ID FROM dbo.MemCards WHERE MC_CardID=@toMemberCardId --对收款人的主键Id赋值
--3.转账的金额是否小于余额
IF ( SELECT MC_Money FROM dbo.MemCards WHERE MC_CardID=@fromMemberCardId)<@transferMoney --如果余额小于转账金额,提示余额不足
BEGIN
SET @errorMsg='转账人的余额不足';
RETURN;
END
BEGIN TRANSACTION --开启事务
BEGIN TRY
UPDATE dbo.MemCards SET MC_Money=MC_Money-@transferMoney WHERE MC_ID=@formId;--给转账人扣钱
UPDATE dbo.MemCards SET MC_Money=MC_Money+@transferMoney WHERE MC_ID=@toId;--给收款人加钱
--写入转账日志
INSERT INTO dbo.TransferLogs
( S_ID ,
U_ID ,
TL_FromMC_ID ,
TL_FromMC_CardID ,
TL_ToMC_ID ,
TL_ToMC_CardID ,
TL_TransferMoney ,
TL_Remark ,
TL_CreateTime
)
VALUES
( 2 , -- S_ID - int
@userId , -- U_ID - int
@formId , -- TL_FromMC_ID - int
@fromMemberCardId, -- TL_FromMC_CardID - nvarchar(50)
@toId , -- TL_ToMC_ID - int
@toMemberCardId , -- TL_ToMC_CardID - nvarchar(50)
@transferMoney , -- TL_TransferMoney - money
@remark , -- TL_Remark - varchar(200)
GETDATE()
-- TL_CreateTime - datetime
)
COMMIT TRANSACTION --提交事务
END TRY
BEGIN CATCH
RAISERROR('处理异常',16,1)
ROLLBACK TRANSACTION--回滚事务
END CATCH
最后
以上就是爱笑帅哥为你收集整理的存储过程转账的全部内容,希望文章能够帮你解决存储过程转账所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复