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;
     
        }
    
  • 相关阅读:
    Knockout应用开发指南 第八章:简单应用举例(2)
    微软ASP.NET站点部署指南(7):生产环境部署
    Knockout应用开发指南 第七章:Mapping插件
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(6)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(5)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(3)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(8)
    Microsoft Visual Studio .NET 2003 引导程序插件下载地址(非官方)
    Vs2010在没有安装SQL Server 2005/2008 Express时如何连接MDF数据文件?
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/1945364.html
Copyright © 2011-2022 走看看