2012-02-05 2 views
1

현재 stored procedures (JAVA)을 oracle db에 테스트 중이므로 모든 emp 엔티티를 표시하려고했습니다.Java 저장 프로 시저로 테이블 데이터를 표시하려면 어떻게합니까?

그럼 내 질문은 어떻게 전체 테이블을 통해 Java 저장 프로 시저를 표시 할 수 있습니까?

이 내가 뭘하려 :이 메도에

create or replace and compile java source named getEMP 
as 
import java.sql.*; 
import java.util.*; 
public class Example{ 
    public static void showEmp() throws SQLException, ClassNotFoundException { 
      ResultSet rs; 
      Properties p = new Properties(); 
      p.put("user", "user"); 
      p.put("password","password"); 
      String strCon = "Connection String"; 

      Class.forName("oracle.jdbc.OracleDriver"); 
      Connection con = DriverManager.getConnection(strCon, p); 

      Statement stmt; 

      con = DriverManager.getConnection(strCon, p); 
      String query = 
        "select empno, ename, deptno, sal, comm " + 
        "from emp"; 

      stmt = con.createStatement(); 
      rs = stmt.executeQuery(query); 

     //Display the ResultSet 
    } 
} 

내 문제는 내가 System.out.println("");를 사용할 수 있다는 것입니다. 이 뒤에는 아무 것도 표시되지 않습니다.

create or replace procedure showEmp 
as language java name 'Example.showEmp()'; 

exec showEmp; 

미리 감사드립니다.

+0

나는 자바 저장 프로 시저라는 것이 있다는 것을 결코 알지 못했다! – hop

+0

힌트 : 데이터베이스에서 저장 프로 시저가 실행됩니다. 귀하의 신청서에 없습니다. –

+0

Java 저장 프로 시저를 사용한 적이 없지만 dbms_output을 사용하거나 선택할 수있는 결과 집합을 반환 할 수 있습니까? 그러나 그 모두는 매뉴얼에 문서화되어야합니다. –

답변

0

서버 출력이 사용 가능한지 확인하고 Java 출력을 서버 출력으로 리디렉션해야합니다. SQL에서 * 플러스 다음 두 문장으로 그것을 수행 할 수 있습니다

SQL> set serveroutput on; 
SQL> call dbms_java.set_output(20000); 

수 20000 DBMS_OUTPUT와 동일한 최대 버퍼 크기입니다.

exec showEmp;을 실행하면 System.out.println() 호출 결과가 출력되는 것을 볼 수 있습니다.