EDIT:この問題の回答のいくつかは、さまざまな問題を引き起こす可能性がありますが、実際にはデータベース接続上の自動コミット機能のバグに関連していました。クエリを実行した後にコミットを強制すると、データベースに変更が反映されたため、以下のコードがこのタイプのストアドプロシージャを呼び出す正しい方法です。Java: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)
...
私はこの
try
{
CallableStatement storedProc = conn.prepareCall("{call PKG_PI_FRAUD.clear_orderProcDtlByOrdId(?)}");
storedProc.setString(1, orderID);
storedProc.execute();
}
catch (SQLException e)
{
e.printStackTrace();
}
のように見えるとのトラブルを抱えているJavaコード、しかし何も存在しませんデータベースの変更が反映されます。 SQL Developerでプロシージャを実行すると、結果が表示されます。私はそれがコミットの問題のためかもしれないと思ったが、私が確立した接続は自動コミットモードになっている。
助けていただけたら幸いです!
は、DBのVARCHARにorderIDを設定していますか? – PermGenError
@PremGenError orderIDはDB内のVARCHAR2です – aeros
2回目にパラメータの前後に引用符を入れてみてください:storedProc.setString( "1"、 "orderID"); – twoleggedhorse