私は以前に遭遇したことのない問題があります:データベースに格納された関数があります:CC_PROCは2つの日付エントリを取り、テーブルを返します。言い換えれば、それを呼び出すために、次のように入力します。Oracle 10へのJava JDBCコール "無効な識別子"
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の内容を再コード化する必要はありません。何か案は?
ありがとうございます!
ハードコーディング入力でsqlplusから同じものを実行しようとしましたか? – kosa
ええ; prepareStatement( "SELECT * FROM(TABLE(CC_PROC(DATE '2012-01-01'、DATE '2012-01-15')))));実行時に同じエラーが発生します。 :/ – Decker
これは何かが変更されたことを意味し、データベース(または)の入力タイプになる可能性があります。 – kosa