-----------------------8.商品销售表存储过程
--按照日期,销售单号模糊查询,汇总表或明细表,按日期顺序,按客户分组
--查询 :销售日期 单号,客户名称,销售单价,销售数量,销售总额,商品备注
--客户编号,商品编号,商品名称,单位,规格型号,业务员
create or replace procedure proc_commoditysellInfo_find
(
info_cursor out sys_refcursor,
startdate in varchar2,
stopdate in varchar2,
datesort in varchar2 default null,--日期排序
clientgroup in varchar2 default null,--客户分组
condition in varchar2 default null,--销售单号
--
commodityname in varchar2 default null,--商品名称
commoditymodel in varchar2 default null,--商品规格
employeename in varchar2 default null,--业务员
customerName in varchar2 default null,--客户名称
customerType in varchar2 default null,--客户类型
customerLevel in varchar2 default null,--客户阶段
customerRank in varchar2 default null,--客户级别
customerSource in varchar2 default null,--客户来源
IndustryType in varchar2 default null,--行业类别
province in varchar2 default null,--省份
city in varchar2 default null--城市
)
as
protype_sql varchar2(2000);--查询所有的sql语句
condition_sql1 varchar2(500);--条件1,起始日期,到终止日期
condition_sql2 varchar2(500);--条件2,销售单号
condition_sql3 varchar2(500);--条件3,是否按日期排序
condition_sql4 varchar2(500);--条件4,是否按客户分组
condition_sql5 varchar2(500);--条件5,商品名称
condition_sql6 varchar2(500);--条件6,商品规格
condition_sql7 varchar2(500);--条件7,业务员
condition_sql8 varchar2(500);--条件8,客户名称
condition_sql9 varchar2(500);--条件9,客户类型
condition_sql10 varchar2(500);--条件10,客户阶段
condition_sql11 varchar2(500);--条件11,客户级别
condition_sql12 varchar2(500);--条件12,客户来源
condition_sql13 varchar2(500);--条件13,行业类别
condition_sql14 varchar2(500);--条件14,省份
condition_sql15 varchar2(500);--条件15,城市
all_sql varchar2(2000);--最终sql语句
begin
protype_sql := 'select csi.selldate,csi.id,ci.id,ci.customername,c.id,c.commodityname,c.commodityunit,c.commoditymodel,
cs.commPrice,cs.commSellNum,cs.totalMoney,e.employeename,c.remark,ci.customerType,ci.customerLevel,ci.customerpank,
ci.customerSource,ci.IndustryType,ci.province,ci.city,csi.amountReceivable,csi.PaidUpMoney,csi.preferentialPrice
from commoditysellInfo csi,CustomerInformation ci,commodity c,commoditysell cs,employeeinfo e
where csi.cid = ci.id and cs.commodityId= c.id and e.id = csi.empid and cs.salesSlip = csi.id';
condition_sql1:=' and csi.selldate between to_date('''||startdate||''',''yyyy-mm-dd'') and to_date('''||stopdate||''',''yyyy-mm-dd'')';
condition_sql2:=' and csi.id like ''%' ||condition|| '%''';
condition_sql3:=' order by csi.selldate desc';
--
condition_sql5:=' and c.commodityname='''||commodityname||'''';
condition_sql6:=' and c.commoditymodel='''||commoditymodel||'''';
condition_sql7:=' and e.employeename='''||employeename||'''';
condition_sql8:=' and ci.customername='''||customerName||'''';
condition_sql9:=' and ci.customerType='''||customerType||'''';
condition_sql10:=' and ci.customerLevel='''||customerLevel||'''';
condition_sql11:=' and ci.customerRank='''||customerRank||'''';
condition_sql12:=' and ci.customerSource='''||customerSource||'''';
condition_sql13:=' and ci.IndustryType='''||IndustryType||'''';
condition_sql14:=' and ci.province='''||province||'''';
condition_sql15:=' and ci.city='''||city||'''';
all_sql:=protype_sql;
if startdate is not null then
all_sql:=protype_sql||condition_sql1;
end if;
if stopdate is not null then
all_sql:=protype_sql||condition_sql1;
end if;
if datesort is not null then
all_sql:=protype_sql;
end if;
if condition is not null then
all_sql:= all_sql||condition_sql2;
end if;
if commodityname is not null then
all_sql:=all_sql||condition_sql5;
end if;
if commoditymodel is not null then
all_sql:=all_sql||condition_sql6;
end if;
if employeename is not null then
all_sql:=all_sql||condition_sql7;
end if;
if customerName is not null then
all_sql:=all_sql||condition_sql8;
end if;
if customerType is not null then
all_sql:=all_sql||condition_sql9;
end if;
if customerLevel is not null then
all_sql:=all_sql||condition_sql10;
end if;
if customerRank is not null then
all_sql:=all_sql||condition_sql11;
end if;
if customerSource is not null then
all_sql:=all_sql||condition_sql12;
end if;
if IndustryType is not null then
all_sql:=all_sql||condition_sql13;
end if;
if province is not null then
all_sql:=all_sql||condition_sql14;
end if;
if city is not null then
all_sql:=all_sql||condition_sql15;
end if;
open info_cursor for all_sql||condition_sql1;
end;