Oracle库中有一张标orderhist(订单表),orderid(订单编号)为主键, 另外一张表orderdet(订单详情表)是orderhist的从表,现在需要实现,把orderhist表三天前的数据给定时清掉,如何实现?
解决方案 »
- java程序中修改clob类型的数据!!!
- ★★100分,为什么建了索引的效果不明显?★★
- linux 安装oracle 11g问题
- 请教高人! delete plan_table表每次都死?
- sql语句
- 统计表数量,SQL 怎么写呢?
- 如何检索出历史记录中最新的50条记录?100分马上结
- 新手请问:tochar和todate是如何使用的?格式?
- 如何从一个导出的DMP文件中,导入某一个表??(该表在数据库中已经存在)
- 我想取得数据表中第三到十行记录,请问SQL该怎么写(假设表名为Table1)?
- 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);就会报错
望指点?