通常、MAX(log_id)を選択します logid_seq.nextvalと同じ値は提供されません 提供された。これがマルチユーザーシステムであると仮定すると、他のユーザーがより大きなlog_idで別の行を挿入した可能性があります。 クエリが実行される前に挿入した行よりも値。
両方のINSERT ステートメントは同じセッションで実行されます。最も簡単なオプションは、おそらくlogid_seq.currvalを使用することです。 2番目のINSERT 声明。 currval 現在のセッションに返されたシーケンスの最後の値を返すため、nextvalによって生成されたのと同じ値が常に返されます。 最初のステートメントを呼び出します。
INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG)
VALUES( logid_seq.currval, ?, ? )
または、RETURNINGを使用することもできます 最初のステートメントの句を使用して、シーケンス値をローカル変数にフェッチし、それを2番目のINSERTで使用します。 声明。しかし、それはおそらく単にcurrvalを使用するよりも手間がかかります 。