1

アプリケーションに、java.sql.TimestampをOracleの日付列に挿入するコードがあります。このコードは正常に機能します。しかし、時々私はエラーを受け取ります:

ORA-01858: a non-numeric character was found where a numeric was expected. 

ログを見ると、同時に実行された同様の挿入が成功し、突然1つの特定の操作がすべて失敗します。異なるステートメント間のフォーマットを見ると、それらは似ています。問題を推測できませんでした。

最初のステートメントは失敗しました。しかし、2番目は正常に挿入されました。

INSERT INTO OMTM_EXECUTE_REPORT(er_id_pk,er_oms_order_id,er_orig_oms_order_id,er_esis_no,er_transaction_no,er_exec_trans_type,er_exec_type,er_ord_status,er_order_rej_reason,er_cust_account,er_settle_type,er_fut_settle_dt,er_security_type,er_symbol_code,er_action,er_ord_quantity,er_ord_type,er_price_per_share,er_stop_price_per_share,er_currency_id,er_time_in_force,er_expire_time,er_last_trd_shares,er_traded_price_per_share,er_leaves_quantity,er_cumulative_qty,er_average_price,er_transact_time,er_trade_date,er_text,er_can_rej_response_to,er_can_rej_reason,er_disclosed_quantity,er_fill_quantity,er_read_flag,er_settle_flag,er_exec_rep_time,er_modified_datetime)
      VALUES      (OMSQ_TM_ID_PK.NEXTVAL,5168,0,08434308,0436594708434308,0,2,2,null,0079027076,9,null,null,ALDAR,BUY,100000,2,5.33,0.0,0,0,2009-12-17 00:00:00.0,100000,5.33,0,100000,5.33,2009-12-17 06:01:54.0,2009-12-17 06:01:54.0,Hold Created Inspite of Insufficient Bal,null,null,0,0,'N','N',SYSDATE,SYSDATE)


INSERT INTO OMTM_EXECUTE_REPORT(er_id_pk,er_oms_order_id,er_orig_oms_order_id,er_esis_no,er_transaction_no,er_exec_trans_type,er_exec_type,er_ord_status,er_order_rej_reason,er_cust_account,er_settle_type,er_fut_settle_dt,er_security_type,er_symbol_code,er_action,er_ord_quantity,er_ord_type,er_price_per_share,er_stop_price_per_share,er_currency_id,er_time_in_force,er_expire_time,er_last_trd_shares,er_traded_price_per_share,er_leaves_quantity,er_cumulative_qty,er_average_price,er_transact_time,er_trade_date,er_text,er_can_rej_response_to,er_can_rej_reason,er_disclosed_quantity,er_fill_quantity,er_read_flag,er_settle_flag,er_exec_rep_time,er_modified_datetime)       
VALUES      (OMSQ_TM_ID_PK.NEXTVAL,5170,0,08434400,0436599708434400,0,2,2,null,0059729784,9,null,null,SOROUH,SELL,82574,2,2.83,0.0,0,0,2009-12-17 00:00:00.0,82574,2.83,0,82574,2.83,2009-12-17 06:04:48.0,2009-12-17 06:04:48.0,null,null,null,0,0,'N', 'N',SYSDATE,SYSDATE)

どんな助けでも大歓迎です

ありがとう

4

2 に答える 2

2

2009-12-17 06:01:54.0Oracle の有効なタイムスタンプ リテラルではありません

以下を使用する必要があります。TIMESTAMP '2009-12-17 06:01:54.0'

これらのステートメントの 1 つが実際に機能することは驚くべきことですが、

于 2010-12-02T10:36:44.250 に答える
0

あなたが言ったことから、2つの可能性が思い浮かびます。

  • 同時実行の問題があります。複数のスレッドが同時にアクセスする共有準備済みステートメントまたは共有接続を使用していますか?
  • Oracle JDBC ドライバーにバグが見つかりました...最新バージョンに更新してみましたか?
于 2010-12-09T09:22:02.133 に答える