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 Zitieren
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 Zitieren
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" Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.