집 >데이터 베이스 >MySQL 튜토리얼 >JDBC를 사용하여 Oracle에서 DBMS_OUTPUT을 검색하는 방법은 무엇입니까?
JDBC를 사용하여 Oracle의 DBMS_OUTPUT.GET_LINES에서 출력 검색
JDBC는 생성하지 않고 Oracle의 dbms_output.get_lines 프로시저에 의해 생성된 출력에 액세스할 수 있는 수단을 제공합니다. 데이터베이스의 추가 개체. 이를 달성하는 방법은 다음과 같습니다.
서버 출력 버퍼링 활성화: 출력에 액세스하기 전에 현재 연결에서 버퍼링을 활성화하여 서버 출력을 캡처합니다.
dbms_output.enable();
PL/SQL에 출력 저장 테이블: 서버 출력을 캡처하려면 PL/SQL에서 테이블을 생성하여 출력을 저장합니다.
create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
DBMS_OUTPUT.GET_LINES 호출: 사용 dbms_output.get_lines를 호출하고 PL/SQL 테이블을 out으로 전달하는 CallableStatement 매개변수:
CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" // Adjust this value as needed + "begin \n" + " dbms_output.get_lines(?, num);\n" + " dbms_output.disable();\n" + "end;\n" ); call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
서버 출력 버퍼링 비활성화: 출력을 검색한 후 버퍼링을 비활성화하여 잠재적인 버퍼 오버플로를 방지합니다.
dbms_output.disable();
예제 코드: 다음은 프로세스를 보여주는 코드 조각입니다.
try (CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" + "begin \n" + " dbms_output.put_line('abc');\n" + " dbms_output.put_line('hello');\n" + " dbms_output.put_line('so cool');\n" + " dbms_output.get_lines(?, num);\n" + " dbms_output.disable();\n" + "end;\n" )) { 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(); } }
이 접근 방식은 Oracle 12c 이상에서 작동합니다. Oracle 11g에서는 보조 SQL TABLE 유형을 사용해야 할 수도 있습니다.
위 내용은 JDBC를 사용하여 Oracle에서 DBMS_OUTPUT을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!