Wir möchten ein XML erstellen. Der aktuelle Code bewirkt, dass jeweils ein XML-Tag an eine VARCHAR2
Variable angehängt wird.Verwenden von CLOB anstelle von VARCHAR2
xmlString VARCHAR2(32767);
....
....
xmlString := xmlString || '<' || elementName || '>' || elementValue || '</' || elementName || '>';
jedoch aufgrund von Größenbegrenzung von 32767 Zeichen auf VARCHAR2
, erhalten wir die folgenden Fehler für eine sehr lange XML.
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Die Lösung, die wir haben, ist eine CLOB
zu erklären und ein Verfahren zu schreiben, die VARCHAR2
Variable auf den CLOB
zu halten Spülung.
v_result clob;
.....
.....
IF xmlString IS NOT NULL THEN
dbms_lob.writeappend(v_result, LENGTH(xmlString), xmlString);
xmlString := NULL;
END IF;
Dies würde jedoch erfordern ersetzen viele ausgehende Codezeilen mit Aufrufen der neuen Funktion. Gibt es einen besseren Weg, dies zu tun?
Alles ähnlich dem Überladen von Operatoren in PLSQL? Kann ich den Datentyp xmlString
Variable zu CLOB ändern und den Operator ||
die Arbeit von dbms_lob.writeappend
ausführen lassen?