Oracle库中有一张标orderhist(订单表),orderid(订单编号)为主键, 另外一张表orderdet(订单详情表)是orderhist的从表,现在需要实现,把orderhist表三天前的数据给定时清掉,如何实现?
解决方案 »
- ORA-02248: 无效的 ALTER SESSION 选项
- 有mysql,mssql基础如何快速入门oracle?
- 关于oracle乱码问题
- 高手来解决个查询 ,急!!!!
- java web工程师转oracle DBA 失败了,被裁了,怎么办啊?目前失业中......
- 急!!!!!!!!!!!!
- navicat 64位 for oracle问题
- 求救 jdbc连接oracle数据库 报罕见错误 网上找不到答案
- 在Linux中连接远程oracle数据库?Sqoop2用法?
- 用sql developer如何插入多条数据
- Cluster file system Mirror
- Oracle链接服务器“调用链接服务器里的包”
crdt 订购日期
senddt 发货日期
fbdt 反馈日期
outdt 分拣日期
orderdet表字段:
ORDERDT 订购日期
RECKONINGDT 结账日期
fbdt 反馈日期。
到时候就按照订购日期来计算事件 两张表之间就是通过主外键联系
CREATE OR REPLACE PROCEDURE del_orderhist AS
BEGIN
--先删除从表orderdet
DELETE FROM orderdet WHERE 外键=(SELECT orderid FROM orderhist WHERE crdt<sysdate-3);
--再删除主表orderhist
DELETE FROM orderhist WHERE crdt<sysdate-3;
COMMIT;
END del_orderhist;用JOB定时调用
CREATE OR REPLACE PROCEDURE del_orderhist AS
BEGIN
--先删除从表orderdet
DELETE FROM orderdet WHERE 外键=(SELECT orderid FROM orderhist WHERE crdt>=sysdate-3);
--再删除主表orderhist
DELETE FROM orderhist WHERE crdt>=sysdate-3;
COMMIT;
END del_orderhist;
variable job1 number;
begin
dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/365);
end;
sysdate+1而不是sysdate+1/365
begin
delete from operatorfile where otime<sysdate-3;
end ;
declare job1 number;
begin
dbms_job.submit(:job1,'operfile_proc;',sysdate,'sysdate+1');
commit;
end;
begin
dbms_job.run(:job1);
end;执行declare job1....
报错:ORA-01008:并非所有变量都已关联
什么原因?
全码如下
create or replace procedure operfile_proc as
begin
delete from operatorfile where otime<sysdate-3;
end;
declare job1 number;
begin
dbms_job.submit(job1,'operfile_proc;',sysdate,'sysdate+1);
end;begin
dbms_job.run(1);
end;但是有点不明白
dbms_job.run(1)为什么里面是1 换成 dbms_job.run(job1);就会报错
望指点?