我在一个表中有大量记录(1.2m +条记录),每天都会在其中相应地插入/更新记录。
现在,我有了一个新的业务要求。
要求如下,
如果CURRENT_DAY为01,即该月的每个第一天,表将被截断,如果不是,则常规插入/更新作业将继续。
我已经从INFORMATICA ETL的末端解决了,逻辑如下,
SQ: SELECT * FROM SOME_TABLE WHERE 1=2
即,没有任何源记录
SQ > EXP > NEW OUTPUT PORT > TO_CHAR(SYSDATE,'DD') - CURR_DAY
现在,
EXP > RTR > NEW GROUP > CURR_DAY = '01'
然后,
RTR > NEW GROUP > TGT > SESSION PROPERTIES > ENABLED TRUNCATE
以这种方式,满足了条件。
但是,我想知道是否还有其他方法可以使用ONLY PURE PL / SQL或SQL?
请引导我。
您可以如下使用PL/SQL
:
BEGIN
IF TRUNC(SYSDATE) = TRUNC(SYSDATE,'MON') THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE YOUR_TABLE';
END IF;
END;
/