sql >> データベース >  >> RDS >> PostgreSQL

JPA2.1PostgreSQLおよびREF_CURSORを使用したStoredProcedureQuery

    簡単な答え:registerStoredProcedureParameter()への2回の呼び出しの順序を逆にします :

    storedProcedure.registerStoredProcedureParameter(1, Object.class, ParameterMode.REF_CURSOR);
    storedProcedure.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
    

    長い答え:Postgress呼び出し可能ステートメントサポートのHibernateソースコード 、および各registerStoredProcedureParameter() 呼び出しにより、 ParameterRegistrationImplementor リストに追加されて渡されるインスタンス。このクラスは、リスト内の位置とは関係なく、パラメーターの位置を格納することに注意してください。

    後で、このリストは分析済み REF_CURSOR パラメータは最初の行になり、REF_CURSORの場合はエラーメッセージをスローします パラメータが最初ではありません。パラメータ番号に関係なく

    物事を行うための非常に明るい方法(IMHO)ではありませんが、少なくとも回避策は簡単です。呼び出しの順序を入れ替えれば、問題はないはずです。




    1. Web API によって返される大きな JSON データの処理

    2. T-SQLを使用してSQLServerのすべてのデータベースを一覧表示する最も簡単な方法

    3. ストアドプロシージャとアクセス許可-EXECUTEで十分ですか?

    4. ServiceNowとOracleIdentityCloud Service(IDCS)の統合