1

目前,我正在测试一些stored procedureson JAVAoracle db所以我尝试显示所有 emp 实体。

所以我的问题是如何通过 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;

提前致谢!

4

1 回答 1

0

您需要确保启用了服务器输出,并将 java 输出重定向到它。在 SQL*PLus 中,您可以使用以下两个语句来完成:

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

数字 20000 是最大缓冲区大小,与DBMS_OUTPUT.

在此之后,如果您运行exec showEmp;,您应该能够看到System.out.println()打印出来的调用结果。

于 2012-02-05T10:29:43.813 回答