oracle如果想写一个存储过程每天定时扫描一张表中的数据,该怎么写呢

2025-03-23 14:03:39
推荐回答(2个)
回答1:

PROCEDURE validate_date(p_date IN VARCHAR2,
p_list_cursor OUT sys_refcursor) IS
l_date VARCHAR2(40) := NULL;
l_err VARCHAR2(250) := NULL;
l_select VARCHAR2(4000) := NULL;
p_status VARCHAR2(40) := NULL;
BEGIN

IF NVL(p_date, 'X') = 'X' THEN --#如果时间是空,默认当前时间'YYYY-MM-DD HH24:MI:SS'
l_date := to_char(SYSDATE(),'YYYY-MM-DD HH24:MI:SS'); ---ROUTE DOES NOT EXISTS
ELSE
l_date:=p_date;
END IF;
--#查找b小于这个时间的数据
l_select := 'SELECT * FROM A WHERE B <' || CHR(39) ||
l_date || CHR(39);
--#将接个返回。系统调用时接收(LIST)
OPEN p_list_cursor FOR l_select;
--#如果有错误,将错误插入到日志表
EXCEPTION
WHEN OTHERS THEN
l_err := SUBSTR(SQLERRM, 1, 100);
p_status := 'E';

INSERT INTO errlog
VALUES
('validate_date',
l_err,
CURRENT_DATE);
commit;
END;

回答2:

扫描具体是要做什么