以下のクエリは機能すると思いますが、テストしていません!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
わからない、それが何らかの形で役立つかどうか。
の場合、GENERATED ALWAYS AS IDENTITY
Oracleは内部的にシーケンスのみを使用します。また、一般的なシーケンスのオプションはこれにも適用されます。
NEXTVALは、次に使用可能なシーケンスをフェッチするために使用され、明らかに疑似列です。
以下はOracleからのものです
CURRVAL
は使用できません およびNEXTVAL
次の構成で:
-
DELETE
のサブクエリ 、SELECT
、またはUPDATE
ステートメント - ビューまたはマテリアライズドビューのクエリ
- DISTINCT演算子を使用したSELECTステートメント
- GROUPBY句またはORDERBY句を含むSELECTステートメント
-
SELECT
別のSELECT
と組み合わされたステートメント UNIONを使用したステートメント、INTERSECT
、またはMINUS
セット演算子 - SELECTステートメントのWHERE句
- CREATETABLEまたはALTERTABLEステートメントの列のデフォルト値
- CHECK制約の条件
subquery
およびSET
上記の操作ルールはあなたの質問に答えるはずです。
そして、NULLの理由で、pseudocolumn
(例:NEXTVAL)は、SET操作または上記の他のルールで使用されます。Oracleは複数の選択を組み合わせて実際にそれらを抽出できなかったため、出力はNULLです。
以下のクエリを見てみましょう
select rownum from dual
union all
select rownum from dual
結果は
ROWNUM
1
1