Stefan87 Geschrieben 20. Mai 2011 Geschrieben 20. Mai 2011 Hallo, weiß jemand eine Möglichkeit wie ich einen CREATE TABLE der ca 13000 Zeichen lang ist und in einem CLOB liegt mit einem EXECUTE IMMEDIATE ausführen kann ? Ist eine Oracle 11g DB.... Danke schonmal für Ideen
dr.dimitri Geschrieben 20. Mai 2011 Geschrieben 20. Mai 2011 Hi, selektier dir den CLOB in eine entsprechend lange VARCHAR2 Variable (in PL/SQL dürfen die bis zu 32K groß sein, nicht nur 4000 byte) und den übergiebst Du dann an Execute Immediate. Dim
Stefan87 Geschrieben 20. Mai 2011 Autor Geschrieben 20. Mai 2011 Wenn ich den VARCHAR2 Wert über 4000 setze kommt der Fehler: "ORA-01461: Ein LONG-Wert kann nur zur Einfügung in eine LONG-Spalte gebunden werden"
dr.dimitri Geschrieben 20. Mai 2011 Geschrieben 20. Mai 2011 Klar, denn Du gehst damit in den SQL Kontext und dort sind wieder nur 4000 Byte erlaubt. Du musst das komplett im PL/SQL Kontext machen: declare l_myClob clob; l_buf varchar2(32000); l_amount binary_integer:=1; begin select myClobColumn,dbms_lob.getlength(myClobColumn) into l_myClob,l_amount from clobTable where id=1; dbms_lob.read(l_myClob,l_amount,1,l_buf); dbms_output.put_line(l_buf); execute immediate l_buf; end; / Die Doku dazu findest Du hier Dim
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden