如果在SQL中TO_CHAR(SYSDATE,'DD')='01',则将整个表截断

问题描述 投票:1回答:1

我在一个表中有大量记录(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?

请引导我。

sql oracle plsql informatica informatica-powercenter
1个回答
1
投票

您可以如下使用PL/SQL

BEGIN
IF TRUNC(SYSDATE) = TRUNC(SYSDATE,'MON') THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE YOUR_TABLE';
END IF;
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.