> 데이터 베이스 > MySQL 튜토리얼 > JDBC를 사용하여 Oracle의 DBMS_OUTPUT을 검색하는 방법은 무엇입니까?

JDBC를 사용하여 Oracle의 DBMS_OUTPUT을 검색하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-04 04:35:39
원래의
869명이 탐색했습니다.

How to Retrieve Oracle's DBMS_OUTPUT Using JDBC?

JDBC를 사용하여 DBMS_OUTPUT.get_lines 검색

Java 애플리케이션 내에서 Oracle의 dbms_output.get_lines를 활용할 때 JDBC는 별도의 작업 없이 출력을 얻는 수단을 제공합니다. 추가 데이터베이스 개체를 생성합니다. 이 접근 방식에는 일련의 단계가 포함됩니다.

  1. 서버 출력 버퍼링 활성화: dbms_output.enable()을 사용하여 서버 출력 버퍼링을 활성화합니다.
  2. 생성 출력: 출력을 생성하고 다음과 같은 저장 프로시저나 스크립트를 실행합니다. 캡처되었습니다.
  3. DBMS_OUTPUT.get_lines를 사용하여 출력 가져오기: CallableStatement 인터페이스를 사용하여 dbms_output.get_lines를 호출하는 프로시저를 실행하고 Array 객체를 출력 매개변수로 등록합니다.
  4. 서버 출력 버퍼링 비활성화: 호출 dbms_output.disable()을 사용하여 버퍼 오버플로를 방지하세요.

다음은 이 프로세스를 보여주는 샘플 코드 조각입니다.

try (CallableStatement call = c.prepareCall(
    "declare "
  + "  num integer := 1000;" // Adapt this as needed
  + "begin "
  + "  dbms_output.enable();"
  + "  dbms_output.put_line('abc');"
  + "  dbms_output.put_line('hello');"
  + "  dbms_output.put_line('so cool');"

  // This captures the output up until now through a PL/SQL TABLE type.
  // Oracle 12c+ uses a SQL cursor, while 11g requires an auxiliary SQL TABLE
  + "  dbms_output.get_lines(?, num);"

  // Disable buffering
  + "  dbms_output.disable();"
  + "end;"
)) {
    call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
    call.execute();

    Array array = null;
    try {
        array = call.getArray(1);
        System.out.println(Arrays.asList((Object[]) array.getArray()));
    }
    finally {
        if (array != null)
            array.free();
    }
}
로그인 후 복사

jOOQ 사용

jOOQ 라이브러리를 사용하는 경우 다음에서 활성화하여 쿼리에 대한 서버 출력을 자동으로 검색할 수 있습니다. 설정 객체:

DSLContext ctx = DSL.using(c, 
    new Settings().withFetchServerOutputSize(10));
로그인 후 복사

쿼리 실행 후 ExecuteContext::serverOutput에서 서버 출력을 사용할 수 있습니다.

DBMS_OUTPUT.GET_LINE에 대한 주의사항

DBMS_OUTPUT.GET_LINE은 행을 개별적으로 검색하는 반면, 벤치마크에서는 이에 비해 상당한 속도 저하가 나타났습니다. PL/SQL에서도 DBMS_OUTPUT.GET_LINES를 사용합니다. 따라서 효율성을 위해 DBMS_OUTPUT.GET_LINES를 활용한 일괄 접근 방식을 권장합니다.

위 내용은 JDBC를 사용하여 Oracle의 DBMS_OUTPUT을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿