【发布时间】:2022-01-13 19:42:58
【问题描述】:
我正在尝试将一些调试信息添加到我的程序中,尽管其中大部分已被注释掉,但我似乎无法编译它。问题似乎在第 29 行。任何帮助将不胜感激。
create or replace
procedure drop_partition(
p_tab varchar2,
p_date date
)
authid current_user
is
v_high_value date;
v_sql_stmt varchar2(200);
cursor v_cur
is
select table_name,
partition_name,
high_value,
partition_position
from user_tab_partitions
where table_name = upper(p_tab);
begin
for v_rec in v_cur loop
execute immediate 'select ' || v_rec.high_value || ' from dual'
into v_high_value;
if ( v_high_value <=
trunc(p_date)) and
v_rec.partition_position != 1
then
dbms_output.put_line ('partition ' || v_rec.partition_name || ' high value is ' || to_char(v_high_value,'mm/dd/yyyy'));
-- v_sql_stmt :=
'EXECUTE IMMEDIATE ALTER TABLE ' || p_tab || ' DROP PARTITION FOR(DATE ' || TO_CHAR(v_high_value,'YYYY-MM-DD') || ')';
v_sql_stmt := 'execute immediate alter table '||p_tab||' drop partition '||v_rec.partition_name';';
--dbms_output.put_line(v_sql_stmt);
--EXECUTE IMMEDIATE v_sql_stmt;
end if;
end loop;
end;
/
【问题讨论】:
-
v_sql_stmt := 'execute immediate alter table '||p_tab||' drop partition '||v_rec.partition_name';';在最终文字前缺少||。 -
为什么要跳过分区号 1?
-
这是我现在保留旧数据的地方,直到做出决定。我建议购买更多的 4 个磁盘(更慢),我可以交换分区。底线是高层管理人员无法做出决定,所以我会一直保留,直到我得到进一步的指示。
标签: oracle debugging procedure