Select 来自 ORACLE table 函数的多行 JAVA 代码

Select multirows from ORACLE table function in JAVA code

在 ORACLE(11g) 中,在某些包中我有一个返回 table:

的函数
SELECT * FROM TABLE( my_PKG.fnc_myList());

因此它在 Oracle SQL Developer 工具中完美运行,例如。我从 SQL 开发人员 查询结果 中的目标 table 获取了行。 题: 它可以从 JAVA (8) 代码运行吗? 我试过下面的代码:

        con = DriverManager.getConnection(...);
        String SQLQ = "{SELECT * FROM TABLE( my_PKG.fnc_myList());}";
        Statement st =con.createStatement();
        rs=st.executeQuery(SQLQ);
        while (rs.next()) {
            int id = rs.getInt(0);
            String name = rs.getString(1);
            ....
        }

但出现错误:

java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement

我是不是哪里错了,还是根本无法通过 JDBC 驱动程序工作?

您不应使用大括号或分号。如果仅调用存储过程,有时会使用大括号。但是你有一个 SELECT 语句(即使它包含一个函数)。并且分号仅在 PL/SQL 或 SQL 开发人员分隔语句的工具中使用:

con = DriverManager.getConnection(...);
    String SQLQ = "SELECT * FROM TABLE( my_PKG.fnc_myList())";
    Statement st =con.createStatement();
    rs=st.executeQuery(SQLQ);
    while (rs.next()) {
        int id = rs.getInt(0);
        String name = rs.getString(1);
        ....
    }