Java JDBC 调用 Oracle 10 函数 "invalid identifier"

标签 java stored-procedures jdbc oracle10g

我遇到了以前从未遇到过的问题:数据库中有一个存储函数: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/

相关文章:

oracle - 如何在oracle中使用定时器执行程序

java - if(rs.next()) block 放置在 while(rs.next()) 之后,永远不会进入

java - 为什么我的 Cassandra 准备语句摄取数据如此慢?

java - 更新到实现 'com.google.android.gms:play-services-ads:15.0.2' 和类路径 'com.google.gms:google-services:3.3.0' 后的 Gradle 错误

sql server 如果不存在则插入并获取插入的id到另一个表中

mysql - 我可以在单个存储过程中使用 2 个表吗

java - 如何从 fragment 中获取 dagger 依赖项注入(inject)的上下文

java - 为什么我会收到 org.hibernate.id.IdentifierGenerationException?

jdbc - Hive JDBC getConnection 不返回

java - 如何通过 MySQL Java Connector 设置 MySQL ANSI_QUOTES 模式?