create or replace procedure proc
as
begin
declare
time_to_stay number(3):=90
with date_partitions as
(select dbms_xmlgen.getxmltype('
select p.table_owner,
p.table_name,
p.high_value
from all_part_key_columns k,
all_tab_cols c,
all_tab_partitions p
where k.owner = c.owner
and k.column_name = c.column_name
and k.name = c.table_name
and k.owner = p.table_owner
and k.name = p.table_name
and (c.data_type = ''DATE'' or
c.data_type like ''TIMESTAMP%'')')
as xml
from dual)
SELECT x.*
FROM date_partitions p,
xmltable('/ROWSET/ROW'
passing p.xml
columns table_owner varchar2(30)
path '/ROW/TABLE_OWNER',
table_name varchar2(30)
path '/ROW/TABLE_NAME',
high_value varchar2(30)
path '/ROW/HIGH_VALUE'
) x
where to_date(substr(x.high_value,
instr(high_value, '''')+2,
19),
'yyyy-mm-dd hh24:mi:ss') <= sysdate-time_to_stay
end;
当我执行代码时,我的程序被创建。但不起作用。当我尝试编译该过程时,出现以下错误。错误(7,1):PLS-00103:在预期以下之一时遇到符号“WITH”:* & = - + ; </ > at in is mod 余数 not rem <> or != or ~= >= <= <> and or like2 like4 likec || 多集成员子多集...
如果我使用开始部分执行此代码,它对我来说很好。