create or replace
FUNCTION REPORT_GENERATION(
IN_STATUS IN VARCHAR2
,IN_USERID IN varchar2
) RETURN CLOB AS
FINAL_RESULT CLOB:=null;
OUTPUT_RESULT CLOB:=null;
BEGIN
/* My implementation. OUTPUT_RESULT contains large XML string */
FINAL_RESULT:=FINAL_RESULT||''||OUTPUT_RESULT;
FINAL_RESULT:=FINAL_RESULT||''||'</EXCEL_MAIN>';
RETURN FINAL_RESULT;
END REPORT_GENERATION;
当我执行此功能时,我收到错误
ORA-06502: PL/SQL: numeric or value error
我在返回FINAL_RESULT时收到错误。 FINAL_RESULT的长度是38123.如果我用一些小字符串替换FINAL_RESULT它正在没有任何问题。
如何解决此问题。请帮忙..
答案 0 :(得分:2)
尝试以下方法:
create or replace
FUNCTION REPORT_GENERATION(
IN_STATUS IN VARCHAR2
,IN_USERID IN varchar2
) RETURN CLOB AS
FINAL_RESULT CLOB := EMPTY_CLOB();
OUTPUT_RESULT CLOB := EMPTY_CLOB();
BEGIN
DBMS_LOB.APPEND(FINAL_RESULT, OUTPUT_RESULT);
DBMS_LOB.APPEND(FINAL_RESULT, '</EXCEL_MAIN>');
RETURN FINAL_RESULT;
END REPORT_GENERATION;
一对夫妇注意到:
使用LOB(CLOB或BLOB)时,总是将它们初始化为EMPTY_CLOB或EMPTY_BLOB。不这样做会导致一堆问题。使用上面的代码,将EMPTY_CLOB更改为NULL以查看会发生什么。
如果您已完成#1,则无法将CLOB或BLOB与NULL进行比较,因为它不是null。将空CLOB / BLOB与EMPTY_CLOB()/ EMPTY_BLOB()进行比较。
分享并享受。