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;
当我执行代码时,I过程被创建。但不起作用。当我尝试编译该过程时,出现以下错误。 错误(7,1):PLS-00103:遇到下列其中一项时遇到符号“WITH”:* & = - +;其中in是mod余数不是rem <>或= =或= => = < = <>和或类似like2 like4 likec在||之间。 multiset成员submultiset ...在存储过程中使用with clause
如果我与开始部分执行此代码,它适用于我的罚款。