Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle - ORA-06502:PL/SQL:числова или стойностна грешка (DBMS_OUTPUT)

Няма да можете да отпечатате клоб чрез dbms_output.put_line директно, ако е по-голям от 32767 байта.

Ако случаят е такъв, можете да създадете процедура за итериране през клапата и да разпечатате едно по-малко парче наведнъж. Такава процедура и тестов скрипт са по-долу:

declare 

  c clob;

  procedure print_clob( p_clob in clob ) is
      v_offset number default 1;
      v_chunk_size number := 10000;
  begin
      loop
          exit when v_offset > dbms_lob.getlength(p_clob);
          dbms_output.put_line( dbms_lob.substr( p_clob, v_chunk_size, v_offset ) );
          v_offset := v_offset +  v_chunk_size;
      end loop;
  end print_clob;


begin
  for i in 1..10000 loop
     c := c || 'test';
  end loop;
  --This will result in ora-06502
  --dbms_output.put_line(c);

  print_clob(c);

end;

Имайте предвид, че v_chunk_size трябва да доведе до по-малко от 32767 байта, които се разделят на парчета. Ако кодирането ви има 2 байта на знак, ще трябва да използвате (32767/2).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cx Oracle ImportError

  2. Къде са моите кръпки?

  3. ORACLE и TRIGGERS (вмъкнати, актуализирани, изтрити)

  4. Създаване на персонализиран екран за влизане в Oracle Forms 10g

  5. ORA-12557 TNS:протоколният адаптер не може да се зареди