sql >> データベース >  >> RDS >> Oracle

Oracle-ORA-06502:PL / SQL:数値または値のエラー(DBMS_OUTPUT)

    32767バイトを超える場合、dbms_output.put_lineを使用してCLOBを直接印刷することはできません。

    この場合、CLOBを反復処理して、一度に1つの小さなチャンクを出力するプロシージャを作成できます。このような手順とテストスクリプトは次のとおりです。

    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. pg_configパスを見つける方法

    2. Postgresqlデータベースにnullを許可しない列を追加するにはどうすればよいですか?

    3. PHP-IN句配列でのPDOの使用

    4. MySQLはORDERBYで行の位置を取得します