Stefan87 Geschrieben 20. Mai 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 20. Mai 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Stefan87 Geschrieben 20. Mai 2011 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 20. Mai 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Stefan87 Geschrieben 23. Mai 2011 Autor Teilen Geschrieben 23. Mai 2011 hat geklappt danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.