0
我們想要創建一個XML。當前代碼通過將一個XML標籤一次追加到VARCHAR2
變量中來實現。使用CLOB代替VARCHAR2
xmlString VARCHAR2(32767);
....
....
xmlString := xmlString || '<' || elementName || '>' || elementValue || '</' || elementName || '>';
但是由於對VARCHAR2
的32767個字符的大小限制,我們得到以下錯誤了很長的XML。
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
我們有解決的辦法是宣佈CLOB
,寫一個程序,以保持VARCHAR2
變量清空至CLOB
。
v_result clob;
.....
.....
IF xmlString IS NOT NULL THEN
dbms_lob.writeappend(v_result, LENGTH(xmlString), xmlString);
xmlString := NULL;
END IF;
但是,這需要用新函數調用來替換大量現有的代碼行。有一個更好的方法嗎?
PLSQL中的運算符重載類似嗎?我可以將xmlString
變量的數據類型更改爲CLOB並使||
運算符執行dbms_lob.writeappend
的工作嗎?