declare
date0 VARCHAR2(50);
date1 VARCHAR2(50);
date2 VARCHAR2(50);
date3 VARCHAR2(50);
begin
date0:='2011-12-05';--改成需要结转月份内任何一天
date1:=substr(date0,1,7)||'-01';
date2:=substr(date0,1,7)||'-31';
date3:=TO_CHAR(add_months(TO_DATE(date1,'YYYY-MM-DD'),1),'YYYY-MM')||'-00';
delete xbf_qc_lsz where dbizdate=date3;
insert into xbf_qc_lsz
(select
pk_corp --公司编号
,date3 as dbizdate--出入库日期
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
,sum(ninnum) as ninnum--入库数量
,sum(noutnum) as noutnum--出库数量
from
(
select
pk_corp --公司编号
,date3 as dbizdate--出入库日期
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
,nvl(ninnum,0) as ninnum--入库数量
,nvl(noutnum,0) as noutnum--出库数量
from view_ic_general_sfc_h
where dbizdate>(select nvl(max(dbizdate),' ') from view_xbf_qc_lsz where dbizdate<date1) and dbizdate<=date2UNION ALLselect
pk_corp --公司编号
,date3 as dbizdate--出入库日期
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
,nvl(ninnum,0) as ninnum--入库数量
,nvl(noutnum,0) as noutnum--出库数量
from view_xbf_qc_lsz
where dbizdate=(select nvl(max(dbizdate),' ') from view_xbf_qc_lsz where dbizdate<date1)
)
group by
pk_corp --公司编号
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
);
end;直接用上面这段代码在PLSQL中能执行成功
用下面这个建成存储过程后,执行就不行
提示 invalid sql statement
--exec pinto_qc_lsz('2011-12-31');
create or replace procedure pinto_qc_lsz(date0 in VARCHAR2)
is
date1 VARCHAR2;
date2 VARCHAR2;
date3 VARCHAR2;
begin
date1:=substr(date0,1,7)||'-01';
date2:=substr(date0,1,7)||'-31';
date3:=TO_CHAR(add_months(TO_DATE(date1,'YYYY-MM-DD'),1),'YYYY-MM')||'-00';
delete xbf_qc_lsz where dbizdate=date3;
insert into xbf_qc_lsz
(select
pk_corp --公司编号
,date3 as dbizdate--出入库日期
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
,sum(ninnum) as ninnum--入库数量
,sum(noutnum) as noutnum--出库数量
from
(
select
pk_corp --公司编号
,date3 as dbizdate--出入库日期
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
,nvl(ninnum,0) as ninnum--入库数量
,nvl(noutnum,0) as noutnum--出库数量
from view_ic_general_sfc_h
where dbizdate>(select nvl(max(dbizdate),' ') from view_xbf_qc_lsz where dbizdate<date1) and dbizdate<=date2UNION ALLselect
pk_corp --公司编号
,date3 as dbizdate--出入库日期
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
,nvl(ninnum,0) as ninnum--入库数量
,nvl(noutnum,0) as noutnum--出库数量
from view_xbf_qc_lsz
where dbizdate=(select nvl(max(dbizdate),' ') from view_xbf_qc_lsz where dbizdate<date1)
)
group by
pk_corp --公司编号
,cwarehouseid_pk --仓库PK
, pk_calbody_pk --库存组织PK
, cbilltypecode_pk--单据类型PK
, cdispatcherid_pk--收发类别PK
,cinvbasid_pk--存货PK
,cspaceid_pk --货位PK
,vuserdef18 --海关型号
,vuserdef19 --手册号
,vuserdef20 --研发名称
,invclasscode --存货分类
,vfree5 --等级
,vbatchcode --批次号
);end pinto_qc_lsz;
调用的时候报错exec pinto_qc_lsz('2011-12-31');
rollback;
DBMS_OUTPUT.PUT_LINE(V_SQL);
line 1, column 7;
object PINTO_QC_LSZ is invalid
PL/SQL: Statement ignored
积分不足,烦请发到 [email protected]谢谢