当前位置: 首页 > 知识库问答 >
问题:

插入CLOB列时获取错误:ORA-06502:PL/SQL:数值或值错误

凌翔宇
2023-03-14
1   DECLARE
2      v_clob_all      CLOB;
3      delimiter                 VARCHAR2 (20) := ',';
4      l_err_message   VARCHAR2 (2000);
5      l_retcode_o     NUMBER := 0;
6   BEGIN
7      DBMS_OUTPUT.PUT_LINE ('START');
8   
9      FOR cur_execution_report IN (SELECT TABLE_NAME     TABLE_NAME,
10                                         PURGE_NAME     PURGE_NAME,
11                                         ENABLE_FLAG    ENABLE_FLAG,
12                                         ARCHIVE_FLAG   ARCHIVE_FLAG,
13                                         END_TIME       END_TIME,
14                                         STATUS         STATUS,
15                                         ELIGIBLE_COUNT ELIGIBLE_COUNT,
16                                         TABLE_SIZE     TABLE_SIZE,
17                                         BIZ_RULE       BIZ_RULE,
18                                         ERROR_MESSAGE  ERROR_MESSAGE
19                                    FROM TEST_REPORT_STATUS)
20     LOOP
21        DBMS_OUTPUT.PUT_LINE ('Inside loop');
22  
23        BEGIN
24           v_clob_all :=
25                 v_clob_all
26              || cur_execution_report.TABLE_NAME
27              || delimiter
28              || cur_execution_report.PURGE_NAME
29              || delimiter
30              || cur_execution_report.ENABLE_FLAG
31              || delimiter
32              || cur_execution_report.ARCHIVE_FLAG
33              || delimiter
34              || TO_CHAR (cur_execution_report.END_TIME,
35                          'DD-MON-YYYY HH:MI:SS PM')
36              || delimiter
37              || cur_execution_report.STATUS
38              || delimiter
39              || cur_execution_report.ELIGIBLE_COUNT
40              || delimiter
41              || cur_execution_report.TABLE_SIZE
42              || delimiter
43              || '"'
44              || REPLACE (
45                    (REPLACE (cur_execution_report.BIZ_RULE, ',', '","')),
46                    '"',
47                    '')
48              || '"'
49              || delimiter
50              || cur_execution_report.ERROR_MESSAGE
51              || UTL_TCP.crlf;
52  
53           DBMS_OUTPUT.PUT_LINE ('Length Of CLOB: ' || LENGTH (v_clob_all));
54        --                EXCEPTION
55        --                   WHEN OTHERS
56        --                   THEN
57        --                      l_err_message :=
58        --                         SUBSTR (
59        --                               ' Error while Executing Report clob data fetch for all records purge : '
60        --                            || SQLERRM,
61        --                            1,
62        --                            1500);
63        --                      l_retcode_o := 1;
64        --
65        --                      RAISE RPT_ERR_MSG;
66        END;
67     END LOOP;
68  END;

共有1个答案

商曦
2023-03-14

如果我理解正确的话,你没有发布代码(为什么不呢?)是

declare
  v_clob_all varchar2(32767);

你为什么不

declare
  v_clob_all clob;

毕竟,您使用的是CLOB;你不是吗?

       v_clob_all :=
             v_clob_all
          || to_clob(cur_execution_report.TABLE_NAME)
          || delimiter
          || to_clob(cur_execution_report.PURGE_NAME)
          || delimiter
          ...
 类似资料:
  • 我得到了 ORA-06502:PL/SQL:以下代码中出现数值或值错误:

  • 正如您所知,由于Oracle11g不支持json,我使用CLOB创建json数据,因为varchar2(32767)大小,但此时我得到了ORA-06502:PL/SQL:numeric或value错误。同时,数据大小为68075。为什么我得到错误,尽管Clob是支持4 gb的数据?

  • 我在执行触发器时遇到以下错误: 请说明问题的原因。 编辑 数据类型:

  • 我实现了一个返回clob数据类型的函数,我希望在DBMS输出中打印结果。不幸的是,我得到了ORA-06502:PL/SQL:numeric或value错误,我认为这是由于dbms_output的大小造成的。 这是密码。 这里有一些东西可以帮助您理解这个问题 1)添加了以下内容来设置缓冲区的大小不受限制,但不起作用… 3)我可以通过执行以下操作来解决这个问题,但我认为这不是一个好的解决方案,因为它执

  • 我有一个向CLOB追加字符串的场景。我遇到的问题是,一旦CLOB达到一定大小,如果我试图向CLOB追加更多内容,就会出现ORA-06502:PL/SQL:numeric或value错误。我假设它的大小已经用完了,但我不知道如何克服这个问题(即指定如何使clob变大)。 有人能帮帮我吗。 我就是这样宣布我的衣服的... 然后我像这样插入它.... 谢谢