Workaround für ORA-00997: Illegale Verwendung des LONG-Datentyps

8

Ich möchte einige Daten aus einer Systemtabelle user_tab_cols in einer temporären Tabelle speichern, um daraus einen Speicherauszug zu erstellen.

Es gibt 100.000 Zeilen, ich habe aus user_tab_cols etwa 1.000 Datensätze ausgewählt und d sie mit dieser Abfrage in eine temporäre Tabelle gespeichert:

%Vor%

Ich hatte den Fehler 'illegale Verwendung von longtype' wegen der Spalte DATA_DEFAULT, die eine Art long enthält.

Gibt es einen alternativen Weg, wo ich einen langen Typ in einem anderen Tisch speichern kann?

    
Moudiz 18.03.2015, 07:33
quelle

2 Antworten

11
  

ORA-00997: Illegale Verwendung des LONG-Datentyps

Dies ist eine Einschränkung bei der Verwendung des LONG -Datentyps. Sie können keinen Objekttyp mit einem LONG-Attribut erstellen.

%Vor%

Alternativ können Sie TO_LOB als Workaround verwenden. Was würde es in CLOB-Datentyp konvertieren.

Zum Beispiel

%Vor%

Weitere Beispiele für Workarounds finden Sie hier .

    
Lalit Kumar B 18.03.2015, 08:27
quelle
2

Sie müssen Ihre Zieltabelle explizit erstellen, nicht aus select * :

%Vor%

(Hinweis: Ich habe data_default a clob für bequemere Abfragen erstellt.)

Dann können Sie Zeilen in eine PL / SQL-Schleife einfügen:

%Vor%

Dieser Ansatz unterliegt prinzipiellen Einschränkungen, da eine Spalte long mehr als die varchar2(32760) enthalten kann, die PL / SQL in der Schleife verwendet. Ich erwarte jedoch, dass 32760 Zeichen für die meisten Spaltenausdrücke ausreichen.

    
William Robertson 14.07.2016 17:22
quelle

Tags und Links