Sql

db2 javaストアード・プロシージャー呼び出しが表示されますERRORCODE = -4476、SQLSTATE = nullエラーソリューション



Db2 Java Stored Procedure Call Appears Errorcode 4476



要求する:

プロジェクトでは、db2 javaが取得したストアード・プロシージャーを使用する必要があり、その結果に従って取得されたデータ・セットの総数を返しますか?

他の人と同じように、次のアプローチを使用します。



図の赤いフレームのように:

rs.last()を使用してデータセットの最後に戻り、レコード数を取得します。

ただし、実稼働環境で同期するときにERRORCODE = -4476、SQLSTATE = nullの場合、取得したデータの量を確認したとき、またはエラーが発生したときに、ネットワーク全体の検索は同じ状況ではありません。地図は赤いボックスで削除できます。



オンラインでは、次のような解決策に遭遇します。

(2)括弧内にパラメータを追加する
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE、ResultSet.CONCUR_READ_ONLY)


注:最初のパラメーター:

ResultSet.TYPE_FORWARD_ONLY:スクロールできない結果セット
ResultSet.TYPE_SCROLL_INSENSITIVE:スクロール可能な結果セットですが、結果は設定されたデータデータベースの変更には従いません

2番目の引数:

CONCUR_READ_ONLY:結果セットは読み取り専用であり、データベースを変更することによって結果セットに悪影響を与えることはありません

CONCUR_UPDATABLE:結果セットは更新可能であり、結果セットを更新するとデータベースに悪影響を与える可能性があります。

引き続き実行できます。

int rowcount = 0

ResultSet resultSet = st.executeQuery(sql)
resultSet.last()//結果セットの最後の行を直接実行してジャンプします

//結果セットを取得できる行数rowcount = resultSet.getRow()
resultSet.beforeFirst()//最初の行を前の行に再実行して、クエリ結果セットの内容をまとめます。
————————————————
説明リンク:https://blog.csdn.net/wang975380547/article/details/54024020

ただし、これは標準のSQLクエリであり、ストアドプロシージャを呼び出すときにこれらのパラメータをすばやく渡します。?さて、見る時間はあります。

これだけがそれを記録します。