我有我以前还没有遇到过一个问题:有一个数据库中的存储功能:CC_PROC,它有两个日期项,并返回一个表。换句话说,调用它,你键入:的Java JDBC调用甲骨文10功能“无效的标识符”
SELECT * FROM (TABLE(CC_PROC(DATE '2012-01-01', DATE '2012-01-15')));
这似乎在sqlplus和NetBeans完美,和上面的线已经显然在使用了一段时间。
总之,使用事先准备好的声明从Java调用它时,我得到:在executeQuery调用无效的标识符:“CC_PROC”。
这是:
PreparedStatement preparedStatement =
connection.prepareStatement("SELECT * FROM (TABLE (CC_PROC(? , ?)))");
preparedStatement.setDate(1,firstDate);
preparedStatement.setDate(2,secondDate);
resultSet = preparedStatement.executeQuery();
我觉得也许这是显而易见的,我使用JDBC直接代替休眠有限的经验是扔我。我不想在java业务逻辑中重新编写CC_PROC的内容。有任何想法吗?
谢谢!
你现在尝试使用硬编码输入从sqlplus执行相同的操作吗? – kosa 2012-02-02 20:19:02
是的; prepareStatement(“SELECT * FROM(TABLE(CC_PROC(DATE'2012-01-01',DATE'2012-01-15')))”);执行后会出现相同的错误。 :/ – Decker 2012-02-02 20:30:18
这意味着更改了某些内容,可能是数据库(或)您的输入类型。 – kosa 2012-02-02 20:31:24