【发布时间】:2014-12-12 16:53:58
【问题描述】:
我正在尝试使用以下函数重命名分区表的分区:
create or replace
function MYFUNCTION(PSCHEMANAME in varchar2, PTABLENAME in varchar2,PINITNAME in varchar2)
return varchar2
is
DEFAULT_NAME varchar2(10);
LRETVALUE VARCHAR2(1000):='0';
EMESG varchar2(1000);
ECODE NUMBER(38);
BEGIN
FOR X IN (SELECT PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'PTABLENAME' AND PARTITION_NAME NOT LIKE 'PINITNAME_%')
LOOP
execute immediate 'select to_char('||X.HIGH_VALUE||'-1,''YYYYMMDD'') from dual' into DEFAULT_NAME;
execute immediate 'alter table'|| PTABLENAME ||' rename partition '||X.PARTITION_NAME||' to PINITNAME_'||DEFAULT_NAME;
LRETVALUE:= ('0-Successful');
RETURN lretvalue;
END LOOP;
EXCEPTION
when OTHERS then lretvalue := '1,Problem....'||sqlcode||','||sqlerrm||';
RETURN lretvalue;
END MYFUNCTION;
我收到一条错误消息说..对 PL/SQL 函数的调用已完成,但未执行 RETURN 语句..
【问题讨论】: