Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle — ORA-06502:PL/SQL:błąd liczbowy lub wartościowy (DBMS_OUTPUT)

Nie będziesz w stanie wydrukować pliku clob bezpośrednio przy użyciu dbms_output.put_line, jeśli jest on większy niż 32767 bajtów.

W takim przypadku możesz utworzyć procedurę iteracji przez kloba i drukowania jednego mniejszego fragmentu na raz. Taka procedura i skrypt testowy znajduje się poniżej:

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;

Zauważ, że v_chunk_size musi skutkować jednorazowym dzieleniem mniej niż 32767 bajtów. Jeśli kodujesz 2 bajty na znak, będziesz musiał użyć (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. AUTONOMICZNA_TRANSAKCJA

  2. Zarządzanie ODP.NET — nie można znaleźć żądanego dostawcy danych .Net Framework

  3. Gdzie jest baza danych błędów Oracle?

  4. Obejście dla ORA-00997:nielegalne użycie typu danych LONG

  5. Jak zamienić 2 zapytania ze wspólnymi kolumnami (A, B) i (A, C) w jedno (A, B, C)?