转帐 存储过程

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调用存储过程sql

在sqlhelper中ide

 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);
相关文章
相关标签/搜索