複数のレコードをテーブルに挿入しようとしていますが、すべてのレコードに同じシーケンス値を使用しています。複数の行に1つのシーケンス値を挿入する
これは、How can I insert multiple rows into oracle with a sequence value?と似ていますが、指定された答えは複数の異なるシーケンス番号を挿入します。複数のrecsに対して同じシーケンス番号が必要です。
create table test1 (
col_a number,
col_b number
);
commit;
create sequence test_seq increment by 1 start with 2 minvalue 1 nocycle nocache noorder;
commit;
insert into test1 (col_a, col_b)
select a.object_id, test_seq.nextval from (
select object_id from all_objects where rownum < 5
) a;
commit;
上記の問題は、検索および挿入複数の(異なる)「test_seq.nextval」の値を、私はすべての行のために挿入同じ値にしたいということです。
これは、トリガー(または複数のSQL文)を使用せずにストレートSQLでも可能ですか?関連する質問への回答の1つは、そうでないかもしれないと示唆していましたが、それは私には分かりませんでした。
ありがとうございました。
私はOracle 11gを使用しています。
ありがとうございました。私は単一のSQL文を期待していましたが、これはあまりにも悪くありません。私は "currval"について知っていたが、何らかの理由でこの文脈でそれについて考えることはなかった。誰もが単一のstmtでこれを行う方法を見つけることができない場合、私はこの答えを受け入れるでしょう。 – Gerrat
そして、私は確かに、単一の文章の解決策があればそれについて学ぶことに興味があるでしょう。 –
なぜ単一のステートメントですか?それを単一のpl/sqlブロックに入れることは、単一の文、すなわち単一の実行可能なコマンドとしてカウントされますか? – araqnid