我需要将 LONG 数据类型的 high_value 与 DATE 数据类型的 sysdate 进行比较。我需要获取 90 天前的所有分区的分区名称。代码是这样的。
declare
dt date;
time_to_stay number:=1; --CONFIGURE AS PER THE REQUIREMENT
begin
for x in (select partition_name , high_value, partition_position
from user_tab_partitions
where table_name = 'DEMO')
loop
execute immediate 'select '||x.high_value||' from dual' into dt;
if to_date(dt) < sysdate-time_to_stay AND x.partition_position <>'1' then
execute immediate 'ALTER TABLE DEMO DROP PARTITION '|| x.partition_name|| ' UPDATE GLOBAL INDEXES';
Run Code Online (Sandbox Code Playgroud)
此查询会执行但不会删除分区。但是我看到主要问题是将 high_value 的 LONG 数据类型转换为 DATE 以在 high_value 和 sys_date 之间进行比较。
我怎样才能解决这个问题?
假设表中有 4 列。
cpt,cpt4mod,itemcharge,eff_date.
Run Code Online (Sandbox Code Playgroud)
条件1:如果值cpt,cpt4
和itemcharge
是一样的,但是eff_date
是不同的。然后我需要根据eff_date
.
condtition2:如果值cpt
和cpt4
是相同的,但eff_date
并itemcharge
不同。然后我需要根据eff_date
.
条件3:如果所有列都具有相同的值,那么我需要根据 eff_date
条件 4:如果 的值cpt,cpt4and,eff_date
相同但itemcharge
不同。然后我需要获取除最新记录之外的所有记录