
JDBC를 사용하여 DBMS_OUTPUT.get_lines 검색
Java 애플리케이션 내에서 Oracle의 dbms_output.get_lines를 활용할 때 JDBC는 별도의 작업 없이 출력을 얻는 수단을 제공합니다. 추가 데이터베이스 개체를 생성합니다. 이 접근 방식에는 일련의 단계가 포함됩니다.
다음은 이 프로세스를 보여주는 샘플 코드 조각입니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!