Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle - ORA-06502:PL / SQL:lỗi số hoặc giá trị (DBMS_OUTPUT)

Bạn sẽ không thể in trực tiếp bảng mã bằng dbms_output.put_line nếu nó lớn hơn 32767 byte.

Nếu đúng như vậy, bạn có thể tạo một thủ tục để lặp qua clob và in ra một đoạn nhỏ hơn tại một thời điểm. Quy trình và tập lệnh kiểm tra như vậy dưới đây:

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;

Lưu ý rằng v_chunk_size phải dẫn đến ít hơn 32767 byte được phân chia tại một thời điểm. Nếu mã hóa của bạn có 2 byte cho mỗi ký tự, bạn sẽ cần sử dụng (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. Nhiều ràng buộc trong bảng:Làm thế nào để nhận được tất cả các vi phạm?

  2. Làm cách nào để gọi một thủ tục được lưu trữ Oracle từ một tập lệnh VBA trong Excel?

  3. Thu thập số liệu thống kê tăng dần trong 11g

  4. So sánh ngày trong Oracle SQL

  5. 3 cách kiểm tra kiểu dữ liệu cột trong Oracle