Kleine, nützliche Verbesserung in 11.2: CREATE OR REPLACE TYPE ... FORCE
Erstellt Ihr öfter Objekttypen in eurem Datenbankschema. Wenn Ihr die Pipelined Table Functions verwendet, macht Ihr das, denn man braucht Objekttypen, um die zurückgegebene Tabelle zu beschreiben. Oracle 11.2 bringt eine kleine, aber nützliche Verbesserung mit, wenn die Objekttypen geändert werden müssen. Bislang musste man den Objekttypen löschen und neu anlegen - und wenn noch abhängige Typen da sind, müssen diese vorher auch gelöscht werden. Die die neue CREATE OR REPLACE TYPE ... FORCE-Option in der Version 11.2 erlaubt es, einen Objekttypen zu ändern, ohne die anhängigen Typen vorher löschen zu müssen. Eine solche Änderung geht nun also wesentlich leichter von der Hand ...
SQL> create type row_t as object(id number, col1 varchar2(2000)); 2 / Typ wurde erstellt. SQL> create type table_t as table of row_t; 2 / Typ wurde erstellt. SQL> create or replace type row_t force as object(id number, col1 varchar2(2000), col2 date); 2 / Typ wurde erstellt. SQL> desc table_t table_t TABLE OF ROW_T Name Null? Typ ----------------------------------------- -------- ---------------------------- ID NUMBER COL1 VARCHAR2(2000) COL2 DATE
Die FORCE Option funktioniert nicht mehr, wenn der Typ als Datentyp in Tabellen verwendet wurde.
SQL> create table test_tab (col table_t) nested table col store as column_ntab; Tabelle wurde erstellt. SQL> create or replace type row_t force as object( 2 id number, 3 col1 varchar2(2000), 4 col2 date, 5 col3 timestamp 6 ); 7 / * FEHLER in Zeile 1: ORA-22866: cannot replace a type with table dependents
Eine kleine, aber manchmal nützliche Änderung ... und die muss es ja auch geben ...
Kommentare:
Klasse! So was wurde schon lange gewünscht. Sehr nützliche Feature, für die PL/SQL Programmierung mit Object-Types.
Sehr gute Sachen.
Kommentar veröffentlichen