2011-07-20 5 views
0

名前付き問合せを使用してPL/SQLファンクションをコールします。 パラメータの1つが私に問題を引き起こします。 PL/SQL定義では、そのタイプはNUMBERです。 ここにJavaコードが設定されています。 q.setParameter (Test.DISTRICT_ID_PARAM,districtId); およびdistrictIdは、Longです。Oracleストアド・ファンクションの1つのパラメータがNULLの場合にスローされます。

districtIdがnullですべてではないokですが、それがnullであるとき、これが結果です: org.hibernate.exception.SQLGrammarException: could not execute query

私はdistrictIdがnullでない場合、クエリがうまく機能するので、配管には問題がありません確信しています。

答えて

0

私はJavaまたはHibernateに特に精通していませんが、私は書いたOracleアプリケーションでは、nullパラメータ(C#)で同様の動作を経験しました。Javaに概念がある場合は、 DBのnullになる(C#DBNull.Value)?

値がnullの場合、Oracleはそれをパラメータがまったく渡されないと解釈すると考えます。

+0

DB関数は、VARCHAR2型の別の3つのパラメータを受け入れます。私は前のものと同じようにそれらを設定し、すべてがうまくいきます(たとえそれらがnullであっても)。私が見つけようとしているのは、NUMBER個のパラメータに違いがあるかどうかです。 –

+0

@ RadStoenescu:PL/SQLパラメータの渡し方から、nullパラメータをvarchar2またはnumber型に渡すときに違いはありません。 – user272735

+0

@ MarkWatts:PL/SQLファンクションにNULL値のパラメータを渡すと、ファンクションはそのパラメータを認識し、パラメータの値はNULLになります。 – user272735

関連する問題