当前位置: 代码迷 >> Sql Server >> 请帮忙见见这个过程
  详细解决方案

请帮忙见见这个过程

热度:59   发布时间:2016-04-24 10:28:00.0
请帮忙看看这个过程
CREATE procedure   ni_contract_export_find  
 @start_date   datetime ,       --开始日期
 @end_date     datetime ,       --截至日期      
 @export_type  int,             --查询类型 1 = 出口  2 = 转厂 
 @customer_id    int,           --客户ID 如果为空 = 0   
 @export_order varchar(100)     --出口单号 可为空     
 as   
 begin        
declare @v_conditions    varchar(8000)   
declare @v_form     varchar(100)            
if ( @export_type  =  1 )                        
begin           
set  @v_form = 'ni_contract_export_find_vd'     
end     
else        
set  @v_form = 'ni_contract_export_find_vt'                 
if ((@customer_id <>0) and (isnull(@export_order,0) = 0))   
 begin      set @v_conditions = 'not exists (select ''x'' from ni_contract_export y  
where y.leave_number = '+@v_form+'.leave_num
 and  y.leave_seq_no = '+@v_form+'.seq_no)
 and  exists
( select ''x''
from oe_order_headers_all a
where '+@v_form+'.order_number = a.order_number
and  a.sold_to_org_id = @customer_id )
and  convert(datetime,'+@v_form+'.creation_date,111)>= convert(datetime,@start_date,111)
and  convert(datetime,'+@v_form+'.creation_date,111)<= convert(datetime,@end_date,111)
order by leave_num, seq_no '     
end    
            
if ((@customer_id <>0) and  (isnull(@export_order,0) <> 0))  
begin            set @v_conditions = ' not exists
 (select ''x''
 from ni_contract_export y
 where y.leave_number = '+@v_form+'.leave_num
 and y.leave_seq_no = '+@v_form+'.seq_no)
 and exists
 (select ''x''
from oe_order_headers_all a
where '+@v_form+'.order_number = a.order_number
and  a.sold_to_org_id = @customer_id)
and   '+@v_form+'.leave_num = @export_order
and  convert(datetime,'+@v_form+'.creation_date,111)>= convert(datetime,@start_date,111)
and  convert(datetime,'+@v_form+'.creation_date,111)<= convert(datetime,@end_date,111)
order by leave_num, seq_no '  
end   
if ((@customer_id =0) and (isnull(@export_order,0) <> 0))
  begin            set @v_conditions ='  not exists
 (select ''x''
 from ni_contract_export y
 where y.leave_number = '+@v_form+'.leave_num
 and y.leave_seq_no = '+@v_form+'.seq_no)
                              and  '+@v_form+'.leave_num = @export_order
and  convert(datetime,'+@v_form+'.creation_date,111)>= convert(datetime,@start_date,111)
and  convert(datetime,'+@v_form+'.creation_date,111)<= convert(datetime,@end_date,111)
order by leave_num, seq_no '  
end    
else      
set @v_conditions = ' not exists
 (select ''x''
 from ni_contract_export y
 where y.leave_number = '+@v_form+'.leave_num
 and y.leave_seq_no = '+@v_form+'.seq_no)
 and  convert(datetime,'+@v_form+'.creation_date,111)>= convert(datetime,@start_date,111)
 and  convert(datetime,'+@v_form+'.creation_date,111)<= convert(datetime,@end_date,111)
 order by leave_num, seq_no'      

declare @sql varchar(500)      
set @sql =N'select leave_num,
       seq_no,
  相关解决方案