我遇到了以前从未遇到过的问题:数据库中有一个存储函数:CC_PROC,它接受两个日期条目并返回一个表。换句话说,要调用它,您键入:
SELECT * FROM (TABLE( CC_PROC( DATE '2012-01-01', DATE '2012-01-15')));
这似乎在 SQLPlus 和 NetBeans 中完美运行,并且上面的行显然已经使用了一段时间。
无论如何,当使用准备好的语句从 java 调用它时,我得到:“CC_PROC”:executeQuery 调用中的无效标识符。
这与:
PreparedStatement preparedStatement =
connection.prepareStatement("SELECT * FROM (TABLE ( CC_PROC( ? , ? )))");
preparedStatement.setDate(1,firstDate);
preparedStatement.setDate(2,secondDate);
resultSet = preparedStatement.executeQuery();
我觉得这可能是显而易见的,我直接使用 JDBC 而不是 Hibernate 的有限经验让我失望。我不想在 Java 业务逻辑中重新编写 CC_PROC 的内容。有什么想法吗?
谢谢!
最佳答案
啊哈,找到答案了:
oracle 用户是 SALESOWN,所以修复是:
PreparedStatement preparedStatement = connection.prepareStatement(
"SELECT * FROM (TABLE ( SALESOWN.CC_PROC( ? , ? )))");
哎呀。我不想承认弄清楚这一点所花费的时间。
显然 SQLPlus 和 NetBeans 确实试图提供一些帮助...
谢谢大家的帮助!
关于Java JDBC 调用 Oracle 10 函数 "invalid identifier",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119262/