sourcecode

dbms_output 버퍼를 늘리는 방법은 무엇입니까?

codebag 2023. 6. 7. 22:47
반응형

dbms_output 버퍼를 늘리는 방법은 무엇입니까?

다음을 통해 동적 쿼리를 디버깅하려고 했습니다.dbms_output하지만 쿼리 문자열이 너무 긴 것 같습니다.dbms_output완충제

내가 받은 것:

ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "SYS.DBMS_OUTPUT", line 148
ORA-06512: at line 1 

버퍼 크기를 늘리는 방법이 있습니까?

DBMS_OUTPUT을 활성화하고 버퍼 크기를 설정할 수 있습니다.버퍼 크기는 1에서 1,000,000 사이입니다.

dbms_output.enable(buffer_size IN INTEGER DEFAULT 20000);
exec dbms_output.enable(1000000);

확인합니다.

편집

프랭크와 매트가 올린 댓글에 따라 Null로 활성화할 수도 있습니다.

exec dbms_output.enable(NULL);

buffer_size : 버퍼링된 정보의 상한(바이트)입니다.buffer_size를 NULL로 설정하면 제한이 없어야 합니다.최대 크기는 1,000,000이고 사용자가 buffer_size(NULL이 아님)를 지정한 경우 최소 크기는 2,000입니다.

버퍼 크기가 꽉 찼을 때.시도할 수 있는 몇 가지 옵션이 있습니다.

DBMS_OUTPUT 버퍼 크기를 1,000,000으로 늘립니다.

버퍼에 기록된 데이터를 필터링해 보십시오. DBMS_OUTPUT에 기록되는 루프가 있을 수 있으며 이 데이터는 필요하지 않습니다.

코드 내의 다양한 체크포인트에서 ENABLE을 호출합니다.호출할 때마다 버퍼가 지워집니다.

DBMS_OUTPUT.ENABLE(NULL)은 dbms_output에 있는 Oracle 문서의 하위 호환성을 위해 기본적으로 20000으로 설정됩니다.

사용자 정의 출력 디스플레이를 만들 수도 있습니다.아래의 토막글과 같은 것.

create or replace procedure cust_output(input_string in varchar2 )
is 

   out_string_in long default in_string; 
   string_lenth number; 
   loop_count number default 0; 

begin 

   str_len := length(out_string_in);

   while loop_count < str_len
   loop 
      dbms_output.put_line( substr( out_string_in, loop_count +1, 255 ) ); 
      loop_count := loop_count +255; 
   end loop; 
end;

Link -Ref : dbms_output의 대안.putline @ 기준: 알렉산더

여기 있습니다.

DECLARE
BEGIN
  dbms_output.enable(NULL); -- Disables the limit of DBMS
  -- Your print here !
END;

언급URL : https://stackoverflow.com/questions/16476568/how-to-increase-dbms-output-buffer

반응형