Oracle 执行JOB程序自动存储数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle 执行JOB程序自动存储数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3058字,纯文字阅读大概需要5分钟。
内容图文
![Oracle 执行JOB程序自动存储数据](/upload/InfoBanner/zyjiaocheng/873/2ac6dc6fcacd425a82c4fab9862b88e8.jpg)
//执行定时任务
DECLARE
JOB NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(job,'CUX_FinishedProcedure;',SYSDATE,'SYSDATE+30/(60*24*60)');
END;
//执行存储过程
CREATE OR REPLACE PROCEDURE CUX_FinishedProcedure IS
vExist NUMBER(30);
isExist NUMBER(30);
VERRINFO VARCHAR(100);
BEGIN
FOR I IN (
select mfg.mfgordername,co.mfgorderid,en.enterprisename,sum( co.qty2)as cuxboxqty ,sum (co.qty) qty,
cum.afterconversionuom,cum.beforeconversionuom,
try.cuxtrayname,mfg.ponumber,mfg.cuxcuzzhh,co.cuxlgort,co.cuxtrayid
from container co
left join mfgorder mfg on mfg.mfgorderid=co.mfgorderid
left join currentstatus cu on co.currentstatusid=cu.currentstatusid
left join enterprise en on en.enterpriseid=mfg.cuxenterpriseid
left join product pr on pr.productid=mfg.productid or pr.productbaseid=mfg.productbaseid
left join productbase prb on prb.productbaseid=pr.productbaseid
left join cuxmfgorderspec cum on cum.specid=cu.specid and cum.mfgorderid=co.mfgorderid
left join producttype prt on pr.producttypeid=prt.producttypeid
left join spec sp on sp.specid=cu.specid
left join cuxtray try on try.cuxtrayid=co.cuxtrayid
where prt.producttypename='ZFER' and co.cuxproductlotstatus in (unistr('\5408\683C'),unistr('\514D\68C0'))
and CO.CUXISPUTSTORAGE is null and sp.cuxisbeginspec='E' and try.status=unistr('\5DF2\7EC4\76D8') AND CO.CUXISVIRTUAL=0
group by mfg.mfgordername,en.enterprisename,cum.afterconversionuom,cum.beforeconversionuom,
try.cuxtrayname,mfg.ponumber,mfg.cuxcuzzhh,co.cuxlgort,co.mfgorderid,co.cuxtrayid
) LOOP
SELECT COUNT(1) INTO isExist FROM CONTAINER CON
LEFT JOIN MFGORDER MFGO ON MFGO.MFGORDERID=CON.MFGORDERID
LEFT JOIN CUXTRAY CTRY ON CTRY.CUXTRAYID=CON.CUXTRAYID WHERE CTRY.CUXTRAYNAME=I.CUXTRAYNAME AND CON.CUXPRODUCTLOTSTATUS NOT IN( unistr('\5408\683C'),unistr('\514D\68C0')) --OR CON.CUXPRODUCTLOTSTATUS IS NULL
AND MFGO.MFGORDERNAME=I.MFGORDERNAME;
IF isExist >0 THEN CONTINUE;
ELSE
SELECT COUNT(1) INTO vExist FROM CUX_FinishedProduct C WHERE C.CUXTRAY = I.CUXTRAYNAME AND C.MFGORDER=I.MFGORDERNAME AND C.CUXSTATUS='0';
IF vExist > 0 THEN CONTINUE;
ELSE
UPDATE CONTAINER CON SET CON.CUXISPUTSTORAGE='1' WHERE con.mfgorderid =I.Mfgorderid and con.cuxtrayid=I.Cuxtrayid;
COMMIT;
INSERT INTO CUX_FinishedProduct(
Guid,
MfgOrder,
Enterprise,
CUXBoxQty,
CUXBeforeConversionUOM,
CUXTray,
CUXStorageLocation,
CUXAfterConversionUOM,
CUXInQty,
CUXZPODAT,
CUXZZHH,
CUXStatus,
CUXCreateTime,
CUXCreateUser
) VALUES(
SYS_GUID(),
I.MFGORDERNAME,
I.ENTERPRISENAME,
I.CUXBOXQTY,
I.beforeconversionuom,
I.Cuxtrayname,
I.CUXLGORT,
I.afterconversionuom,
I.QTY,
I.ponumber,
I.CUXCUZZHH,
'0',
SYSDATE(),
'SYSTEM'
);
COMMIT;
END IF;
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
BEGIN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQLCODE));
VERRINFO:=SUBSTR(SQLERRM,1,100);
INSERT INTO ERRORINFO(CUXTABLE,CUXPROCEDURE,ERRORMESSAGE,ERRORTIME) VALUES('CUX_FinishedProduct','CUX_FinishedProcedure',VERRINFO,SYSDATE());
COMMIT;
END;
END CUX_FinishedProcedure;
内容总结
以上是互联网集市为您收集整理的Oracle 执行JOB程序自动存储数据全部内容,希望文章能够帮你解决Oracle 执行JOB程序自动存储数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。