sql >> Database teknologi >  >> RDS >> Oracle

Oracle - ORA-06502:PL/SQL:numerisk eller værdifejl (DBMS_OUTPUT)

Du vil ikke være i stand til at udskrive en clob ved hjælp af dbms_output.put_line direkte, hvis den er større end 32767 bytes.

Hvis dette er tilfældet, kan du oprette en procedure til at iterere gennem klumpen og udskrive en mindre del af gangen. Sådan en procedure og testscript er nedenfor:

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;

Bemærk, at v_chunk_size skal resultere i, at mindre end 32767 bytes bliver chunked ad gangen. Hvis din kodning har 2 bytes pr. tegn, skal du bruge (32767/2).



  1. SQL Server-udførelsesplan — hvad er det, og hvordan hjælper det med ydeevneproblemer?

  2. Groovy SQL Oracle Array Funktion/Procedure Out Parameter Registrering

  3. Postgres VÆLG hvor WHERE er UUID eller streng

  4. Formater tal med kommaer i PostgreSQL