zoukankan      html  css  js  c++  java
  • 存储过程(回滚+if语句+返回参数+用类接收参数)实例

    CREATE PROCEDURE  change_product
    @result varchar(50)  output,
    @product_no varchar(50),
    @color varchar(50),
    @product_size varchar(50),
    @oldcolor varchar(50),
    @oldproduct_size varchar(50),
    @stockid  int,
    @oldstockid int,
    @number int,
    @users varchar(50),
    @orderno varchar(50),
    @memo_product_inout_record text
    
     AS
     
     declare @stockname varchar(50)
     declare @oldstockname varchar(50)
     declare @color2 varchar(50)
    begin TRANSACTION
               declare @nror int
               set @nror=0        
    
    
       if @stockid>0 and @oldstockid>0
       begin
    select  @stockname=stockname from tbl_stockid where stockid=@stockid
    select top 1  @color2=color2 from tbl_productstore where product_no=@product_no and color=@color
      select @oldstockname=stockname from tbl_stockid where stockid=@oldstockid
    
               
    /*如果原订单库存为自备货*/
       if @oldstockid=1 or @oldstockid=2 or @oldstockid=3
    begin
             /*如果新订单库存为自备货*/
            if @stockid=1 or @stockid=2 or @stockid=3
            begin
            
               update tbl_productstore set number=number+@number,lock_number=lock_number-@number where product_no=@product_no and color=@oldcolor and product_size=@oldproduct_size and stockid=@oldstockid 
               set @nror=@nror+@@error
              
    			insert into tbl_product_inout_record
    		(product_no,color,product_size,number2,stock,users,operation_type,operation,memo)
    		 values (@product_no,@oldcolor,@oldproduct_size,@number,@oldstockname,@orderno+'|'+@users,'入库','修改订单',@memo_product_inout_record)    
    		  set @nror=@nror+@@error
    		  
    		             update tbl_productstore set number=number-@number,lock_number=lock_number+@number where product_no=@product_no and color=@color and product_size=@product_size and stockid=@stockid 
               set @nror=@nror+@@error
              
    			insert into tbl_product_inout_record
    		(product_no,color,product_size,number2,stock,users,operation_type,operation,memo)
    		 values (@product_no,@color,@product_size,0-@number,@stockname,@orderno+'|'+@users,'出库','修改订单',@memo_product_inout_record)    
    		  set @nror=@nror+@@error
    		   
    		   update tbl_trade set stockid=@stockid,color=@color,product_size=@product_size,color2=@color2  where orderno=@orderno
    		   set @nror=@nror+@@error  	   
            
            end       
            
            /*如果新订单库存为全国货或都银泰仓库*/
            else if @stockid=4 or @stockid=5
            begin
            
                       update tbl_productstore set number=number+@number,lock_number=lock_number-@number where product_no=@product_no and color=@oldcolor and product_size=@oldproduct_size and stockid=@oldstockid 
               set @nror=@nror+@@error
                         
    			insert into tbl_product_inout_record
    		(product_no,color,product_size,number2,stock,users,operation_type,operation,memo)
    		 values (@product_no,@oldcolor,@oldproduct_size,@number,@oldstockname,@orderno+'|'+@users,'入库','修改订单',@memo_product_inout_record)    
    		  set @nror=@nror+@@error
    		  
    		  update tbl_productstore set number=number-@number,lock_number=lock_number+@number where product_no=@product_no and color=@color and product_size=@product_size and stockid=@stockid 
               set @nror=@nror+@@error  
               
               		  update tbl_trade set stockid=@stockid,color=@color,product_size=@product_size,color2=@color2  where orderno=@orderno
    		   set @nror=@nror+@@error  	   
            end         
     end 
      
      /*如果原来的库存标识为全国货或者银泰的*/
     if  @oldstockid=4 or @oldstockid=5 
     begin
         /*如果新的订单库存标识为自备货*/
         if @stockid=1 or @stockid=2 or @stockid=3
          begin
          
          update tbl_productstore set number=number+@number,lock_number=lock_number-@number where product_no=@product_no and color=@oldcolor and product_size=@oldproduct_size and stockid=@oldstockid 
               set @nror=@nror+@@error
               
                 update tbl_productstore set number=number-@number,lock_number=lock_number+@number where product_no=@product_no and color=@color and product_size=@product_size and stockid=@stockid 
               set @nror=@nror+@@error
              
    			insert into tbl_product_inout_record
    		(product_no,color,product_size,number2,stock,users,operation_type,operation,memo)
    		 values (@product_no,@color,@product_size,0-@number,@stockname,@orderno+'|'+@users,'出库','修改订单',@memo_product_inout_record)    
    		  set @nror=@nror+@@error
    		  
    		 update tbl_trade set stockid=@stockid,color=@color,product_size=@product_size,color2=@color2  where orderno=@orderno
    		   set @nror=@nror+@@error  	   
    
          end 
    
         /*如果新的订单库存标识为全国货*/
         else if @stockid=4 or @stockid=5
         begin
         
          update tbl_productstore set number=number+@number,lock_number=lock_number-@number where product_no=@product_no and color=@oldcolor and product_size=@oldproduct_size and stockid=@oldstockid 
               set @nror=@nror+@@error
               
                 update tbl_productstore set number=number-@number,lock_number=lock_number+@number where product_no=@product_no and color=@color and product_size=@product_size and stockid=@stockid 
               set @nror=@nror+@@error
               
               		  update tbl_trade set stockid=@stockid,color=@color,product_size=@product_size,color2=@color2  where orderno=@orderno
    		   set @nror=@nror+@@error  	   
         end 
    end 
          
    end 
         if @nror<>0         
                  begin
      set @result='失败'
                    rollback transaction
                  end
               else        
                  begin
      set @result='成功'
                    commit transaction
                  end
    GO
    
    
    
        public string chang_product(string product_no,string color,string product_size,string oldcolor,string oldproduct_size,int  stockid,int oldstockid,int number,string users,string orderno,string memo_product_inout_record)
        {
            con = new SqlConnection(shopcon);
            con.Open();
            com = new SqlCommand("change_product", con);
            com.CommandType = CommandType.StoredProcedure;
            com.Parameters.Add("@product_no",product_no );
            com.Parameters.Add("@color",color );
            com.Parameters.Add("@product_size",product_size);
            com.Parameters.Add("@oldcolor", oldcolor);
            com.Parameters.Add("@oldproduct_size",oldproduct_size);
            com.Parameters.Add("@stockid",stockid );
            com.Parameters.Add("@oldstockid",oldstockid );
            com.Parameters.Add("@number",number );
            com.Parameters.Add("@users",users );
            com.Parameters.Add("@orderno",orderno );
            com.Parameters.Add("@memo_product_inout_record",memo_product_inout_record);
            com.Parameters.Add(new SqlParameter("@result", SqlDbType.NVarChar, 30));
            com.Parameters["@result"].Direction = ParameterDirection.Output;
            com.ExecuteNonQuery();
            string result = com.Parameters["@result"].Value.ToString();
            con.Close();
            com.Dispose();
            return result;
     
        }
    
  • 相关阅读:
    kerberos认证原理---讲的非常细致,易懂(转发)
    CDH安装之篇四:启用Kerberos认证(转发)
    RabbitMQ和Kafka(转发)(待续)
    Kafka的Log存储解析(转发)(待续)
    滴滴passport设计之道:帐号体系高可用的7条经验(含PPT)(转发)(待续)
    淘宝的消息中间件(2013) (转发)(待续)
    设计消息中间件时我关心什么?(解密电商数据一致性与完整性实现,含PPT)(转发)
    一种提高微服务架构的稳定性与数据一致性的方法(转发)
    大型网站架构系列:消息队列(转发)
    Kafka实战解惑(转发)
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/1945364.html
Copyright © 2011-2022 走看看