• 存储过程转账


    -- ================================================
    -- Template generated from Template Explorer using:
    -- Create Procedure (New Menu).SQL
    --
    -- Use the Specify Values for Template Parameters
    -- command (Ctrl-Shift-M) to fill in the parameter
    -- values below.
    --
    -- This block of comments will not be included in
    -- the definition of the procedure.
    -- ================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author: <王>
    -- Create date: <2017-9-14>
    -- Description: <用户借款>
    -- =============================================
    alter PROCEDURE Pro_jk
    -- 定义参数
    @jekuanr int,--借款人
    @bejkuanr int,--被借款人
    @moeny decimal(18,2),--借款金额
    @result nvarchar(200) output--结果输出
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    begin tran;--事物开启
    begin try
    declare @oldmoney decimal ;--被借款人的总金额
    declare @oldname nvarchar(200);--被借款人名字
    select @oldmoney=Usermoney,@oldname=Username from Userb where Userid=@bejkuanr;--查询被借款人的金额
    if(@oldmoney>=@moeny and @moeny>0)
    begin
    declare @err int=0;--定义错误编号
    update Userb set Usermoney=Usermoney-@moeny where Userid=@bejkuanr;--修改被借款人的金额
    set @err=@err+@@ERROR;--每次sql执行 获取一次错误编码
    update Userb set Usermoney=Usermoney+@moeny where Userid=@jekuanr;--修改借款人的金额
    set @err=@err+@@ERROR;--每次sql执行 获取一次错误编码
    COMMIT TRAN;
    declare @jekuaname nvarchar(200);--借款人名字
    select @jekuaname=Username from Userb where Userid=@jekuanr;--查询借款人的名字
    insert into Userlogn values
    (
    @jekuanr,
    @bejkuanr,
    @jekuaname+'在时间:'+convert(varchar(50),getdate(),121)+'借了'+@oldname+'的'+cast(@moeny as varchar(20))+'元'
    );
    set @err=@err+@@ERROR;--每次sql执行 获取一次错误编码

    IF(@err =0)
    BEGIN
    SET @result ='借款成功';
    COMMIT TRAN; --执行成功 事物提交
    END
    ELSE
    begin
    SET @result ='借款失败';
    ROLLBACK TRAN; --执行失败 事物回滚
    END

    end
    end try
    begin catch
    rollback TRAN
    end catch
    END
    GO

  • 相关阅读:
    2016/3/28 大三下第一月
    hihoCoder1284机会渺茫(唯一分解定理 + 约分)
    瞬沐队小组会议
    本周编程
    团队简介及团队课题
    本周编程
    Python环境的配置
    疫情图表
    本周编程
    返回一个数组中和最大的子数组
  • 原文地址:https://www.cnblogs.com/w-pengchao/p/7872765.html
Copyright © 2020-2023  润新知