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 + ''
详细解决方案
仍是这个过程
热度:43 发布时间:2016-04-24 10:25:47.0
相关解决方案