• 转账 存储过程


    alter proc usp_trancMoney
    @from char(4),
    @to char(4),
    @money money ,
    @isok int output 
    as 
    begin
    
        declare @have money =-1 ,@iscunzai int =0
        select @have=balance from bank where cId=@from
        
        --看看要存入的账号是否存在
    
         if not exists(
            select cid from bank where cId=@to)
             begin
                set @isok=4 --要转入的账号不存在
                return
             end
    
        if @have<0  --要转出的账号是否存在
            begin
                set @isok=3  ---wu zhang hao
            end
        else 
            begin 
                if    @have-@money<10
                    begin
                        print @have
                        set @isok=2 --wu ge bu zu 
                    end
                    
                else
                    begin
                        print '转账kaishi '
                    
                        --开始转账
                         
                        begin transaction
                            update  bank set balance=balance-@money where cId=@from
                            set @isok=@isok+@@error 
                            update bank set balance=balance+@money where cId=@to
                            set @isok=@isok+@@error 
                            if @isok>0
                                begin
                                 set @isok=1--error
                                  rollback
                                end
                            else
                                begin
                                    set @isok=0  --ok
                                    commit tran
                                end
                        
                    end
                
            end
    
    end    
    
    ---------测试
    declare @out int
    declare @str nvarchar(33)
    exec usp_trancMoney @from='0005',@to='0003' ,@money=10 ,@isok=@out output
    
    
    select @str=
            case @out
                when 0 then '成功了'
                when 1 then  '失败了'
                when 2 then  '余额不足'
                when 3 then  '不存在的账号(转出)'
                when 4 then  '要转入的账号不存在'
                else '未知错误'
            end
    print @str
    View Code

    ado.net调用存储过程

    在sqlhelper中

     1   //1.执行增(insert)、删(delete)、改(update)的方法
     2         //ExecuteNonQuery()
     3         public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] pms)
     4         {
     5             using (SqlConnection con = new SqlConnection(conStr))
     6             {
     7                 using (SqlCommand cmd = new SqlCommand(sql, con))
     8                 {
     9                     //cmd.CommandType = CommandType.Text;//这个是默认的,当使用sql语句的时候传入这个
    10                     //cmd.CommandType = CommandType.StoredProcedure;//存储过程
    11                     cmd.CommandType = cmdType;
    12                     if (pms != null)
    13                     {
    14                         cmd.Parameters.AddRange(pms);
    15                     }
    16                     con.Open();
    17                     return cmd.ExecuteNonQuery();
    18                 }
    19             }
    20         }
    View Code

    调用

                SqlParameter[] pms = new SqlParameter[]{
                new SqlParameter("@from",SqlDbType.Char,4){ Value=from},
                new SqlParameter("@to",SqlDbType.Char,4){ Value=to},
                new SqlParameter("@money",SqlDbType.Money){ Value=money},
                new SqlParameter("@isok",SqlDbType.Int){ Direction=ParameterDirection.Output}
                };
    
                //调用存储过程实现转账
                SqlHelper.ExecuteNonQuery("usp_trancMoney", CommandType.StoredProcedure, pms);
                int result = Convert.ToInt32(pms[3].Value);
  • 相关阅读:
    E
    D
    Npp ChangeLog
    c++ 书籍(zz)
    再好的工作是为了更好的生活
    如何将JPG格式的图片转换成PNG格式
    点分治
    团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
    团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
    团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
  • 原文地址:https://www.cnblogs.com/nanxiaoxiang/p/6552449.html
Copyright © 2020-2023  润新知