2012-02-02 18 views
2

私は以前に遭遇したことのない問題があります:データベースに格納された関数があります: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の内容を再コード化する必要はありません。何か案は?

ありがとうございます!

+1

ハードコーディング入力でsqlplusから同じものを実行しようとしましたか? – kosa

+0

ええ; prepareStatement( "SELECT * FROM(TABLE(CC_PROC(DATE '2012-01-01'、DATE '2012-01-15')))));実行時に同じエラーが発生します。 :/ – Decker

+0

これは何かが変更されたことを意味し、データベース(または)の入力タイプになる可能性があります。 – kosa

答えて

1

アハは、答えを見つけました:

修正はしたので、oracleユーザーが、SALESOWNた:

PreparedStatement preparedStatement = connection.prepareStatement(
     "SELECT * FROM (TABLE (SALESOWN.CC_PROC(? , ?)))"); 

む〜。私はそれを理解するのにかかった時間を認めたくありません。

どうやらSQLPlusをし、NetBeansは...少しを助けるために、ヘルプみんなのため

感謝をしようとしません!

+1

次のことが可能な場合は、1回だけ行う方がよい:http://stackoverflow.com/questions/2353594/default-schema-in-oracle-connection-url。 'ALTER SESSION SET CURRENT_SCHEMA = SALESOWN' –

関連する問題