Automation 在Oracle11g中自动化任务

Automation 在Oracle11g中自动化任务,automation,oracle11g,Automation,Oracle11g,我正在为拍卖创建一个数据库,其中有一个表,用于存储拍卖物品的条目。 create table items( item_ID number(5) PRIMARY KEY, SDate DATE NOT NULL, EDate DATE NOT NULL, //end date for auction minBid number(5,2) NOT NULL, bidInc number(2,2) NOT NULL, title varchar2(20) NOT NULL, descr varchar

我正在为拍卖创建一个数据库,其中有一个表,用于存储拍卖物品的条目。

create table items(
item_ID number(5) PRIMARY KEY,
SDate DATE NOT NULL,
EDate DATE NOT NULL, //end date for auction
minBid number(5,2) NOT NULL,
bidInc number(2,2) NOT NULL,
title varchar2(20) NOT NULL,
descr varchar2(255),
currentBid number(5,2)
)
现在,在结束日期过后,我希望数据库自动从表中删除该条目。

我该怎么做呢?

好吧,你可以在数据库中写一个作业,删除比X时间早的行,但既然你把它标记为C#,我猜你希望在拍卖应用程序中完成

在这种情况下,您可以创建一个
计时器
,它将在每次运行时从EDate>XXX查询的项目中运行
删除

编辑:在这种情况下,您可以定义一个将删除旧行的存储过程,然后需要使用
DBMS\u作业
对其进行调度。我手头没有Oracle DB来测试此功能,但您可以尝试运行此功能:

创建存储过程:

create or replace procedure delete_old_auctions
as
begin
    delete from items where edate < sysdate
end;

所有被困在类似解决方案中的人,请看下面的方法

步骤1:创建过程

create procedure item_delete as
begin
delete from items where edate<sysdate
end;


参考文献
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#i1000363

不,我希望数据库本身来处理此问题,而不是我的应用程序。很抱歉误解。在这种情况下,我更新了答案。不幸的是,我现在无法测试这一点,但即使它从第一次尝试起就不起作用,你也应该有一些事情要做。我做了一些窥探,我想DBMS_调度程序就是我要找的…那么有人能解释一下这个功能吗?
create procedure item_delete as
begin
delete from items where edate<sysdate
end;
DBMS_SCHEDULER.create_job (
job_name        => 'delete_old_items',
job_type        => 'STORED_PROCEDURE',
job_action      => 'exec item_delete',
start_date      => sysdate,
repeat_interval => 'freq=daily; byhour=0;byminute=0;bysecond=0;',
end_date        => NULL,
enabled         => TRUE
);
END;