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?
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 .
Sie müssen Ihre Zieltabelle explizit erstellen, nicht aus select *
:
(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.
Tags und Links sql oracle sqldatatypes sqllong