編集:この質問の回答の一部は、さまざまな問題を抱えている他の人に役立つ場合がありますが、実際には、解決策はデータベース接続の自動コミット機能のバグに関連していました! クエリの実行後にコミットを強制すると、データベースに変更が反映されるため、以下に示すコードは、このタイプのストアド プロシージャを呼び出す正しい方法です。
Oracle データベースで単純なストアド プロシージャを呼び出そうとしています。
手順は次のようになります。
procedure clear_orderProcDtlByOrdId(p_order_id in order_header.order_id%type,
p_transaction_id in sl_order_processing_dtl.transaction_id%type DEFAULT NULL,
p_item_action_id in sl_order_processing_dtl.item_action_id%type DEFAULT NULL )
...
私が問題を抱えているJavaコードは次のようになります
try
{
CallableStatement storedProc = conn.prepareCall("{call PKG_PI_FRAUD.clear_orderProcDtlByOrdId(?)}");
storedProc.setString(1, orderID);
storedProc.execute();
}
catch (SQLException e)
{
e.printStackTrace();
}
エラーはまったく発生していませんが、データベースの変更は反映されていません。SQL Developer でプロシージャを実行すると、結果が表示されます。コミットの問題が原因ではないかと思いましたが、確立した接続は自動コミット モードになっています。
どんな助けでも大歓迎です!