当前位置: 代码迷 >> Sql Server >> 仍是这个过程
  详细解决方案

仍是这个过程

热度:43   发布时间:2016-04-24 10:25:47.0
还是这个过程
CREATE PROCEDURE ni_contract_export_find
    @start_date  varchar(100) ,       --开始日期
    @end_date   varchar(100) ,       --截至日期      
    @export_type   INT ,             --查询类型 1 = 出口  2 = 转厂 
    @customer_id  VARCHAR(100) ,           --客户ID 如果为空 = 0   
    @export_order VARCHAR(100)     --出口单号 可为空     
AS
BEGIN   

Create table  #contract_export_find 
(leave_num int ,seq_no int,num  varchar(30),description nvarchar(250),
 box_number varchar(30),cust_name nvarchar(250),cust_number varchar(250),
 leave_id int ,creation_date datetime,order_number int,out_type  varchar(30),
 x_id  int ,x_weight int)
     
DECLARE @v_conditions varchar(8000)
DECLARE @v_form VARCHAR(100)

IF  (@export_type = 1)  
begin 
set @v_form = 'ni_contract_export_find_vd'
end
IF  (@export_type = 2) 
     begin
set @v_form = 'ni_contract_export_find_vt'  
     end
IF(isnull(@export_order,'') <> '') 
   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+'''
order by leave_num, seq_no'
  END

IF (( @customer_id <> 0 ) AND (isnull(@start_date,'') <>'') and (isnull(@end_date,'') <>''))
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(@start_date,'') = '') or (isnull(@end_date,'') = '')))  
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+' )
order by leave_num, seq_no '     
END   

IF (( @customer_id = 0 ) AND ((isnull(@start_date,'') <> '') or (isnull(@end_date,'') <> '')))  
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  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  


  
DECLARE @sql VARCHAR(8000) 
SET @sql = N'insert into  #contract_export_find 
(leave_num ,seq_no ,num ,description,box_number,cust_name ,cust_number,leave_id ,creation_date,order_number ,out_type ,x_id ,x_weight)
select leave_num,seq_no,num,description,box_number,cust_name,cust_number,leave_id,creation_date,order_number,out_type,x_id,x_weight
from  ' + @v_form + '
where ' + @v_conditions + ''

  相关解决方案