2012-02-05 74 views
1

目前,我正在測試stored proceduresJAVAoracle 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

我從來不知道有什麼叫java存儲過程! – hop 2012-02-05 09:04:01

+0

提示:存儲過程在數據庫中運行。不在您的應用程序中。 – 2012-02-05 09:33:58

+0

我從來沒有使用Java存儲過程,但也許你可以使用'dbms_output'或者返回一個你可以選擇的結果集?但是,這些都應記錄在手冊中。 – 2012-02-05 10:10:53

回答

0

您需要確保已啓用服務器輸出並將java輸出重定向到它。在SQL * Plus可以完成與以下兩個語句:

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

數20000是最大緩衝區大小,相同DBMS_OUTPUT

在此之後,如果您運行exec showEmp;,您應該可以看到正在打印的System.out.println()呼叫的結果。

相關問題