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);
....
}
在 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);
....
}