====== [HOWTO] Rename a table in oracle ======
====== Descripción ======
Este procedimiento permite renombrar una tabla cuando:
RENAME TABLE1 TO TABLE2 ;
Falla, por ejemplo con ''ORA-03001: unimplemented feature''.
====== Instrucciones ======
===== ALTER TABLE =====
Mediante un ''ALTER TABLE'' se puede hacer:
ALTER TABLE T1 RENAME TO T2 ;
Debería funcionar.
===== Crear el siguiente procedure =====
CREATE OR REPLACE PROCEDURE RENAME_OTHERS_TAB (ORIG_TAB_NAME IN VARCHAR2, NEW_TAB_NAME IN VARCHAR2)
AS
LV_SQL_STR VARCHAR2(100);
LV_EXISTS NUMBER(1);
BEGIN
SELECT COUNT(*) INTO LV_EXISTS FROM USER_TABLES WHERE TABLE_NAME=ORIG_TAB_NAME;
IF LV_EXISTS = 1 THEN
LV_SQL_STR := 'RENAME '|| ORIG_TAB_NAME ||' TO '||NEW_TAB_NAME;
DBMS_OUTPUT.PUT_LINE (LV_SQL_STR);
EXECUTE IMMEDIATE LV_SQL_STR;
ELSE
DBMS_OUTPUT.PUT_LINE('ERROR:'||ORIG_TAB_NAME||' DOES NOT EXISTS!');
END IF;
END;
/
===== Ejecutar el procedimiento =====
exec rename_others_tab('TABLE1','TABLE2');
====== thanks to ======
[[http://chandrapabba.blogspot.com.es/2009/09/ora-03001-while-trying-rename-tables.html|chandra]]