Věřím, že níže uvedený dotaz funguje, netestoval jsem!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Nejsem si jistý, jestli vám to nějak pomůže.
Pro, GENERATED ALWAYS AS IDENTITY
Oracle interně používá pouze sekvenci. A také na to platí možnosti obecné sekvence.
NEXTVAL se používá k načtení další dostupné sekvence a zjevně jde o pseudosloupec.
Níže uvedené je od společnosti Oracle
Nemůžete použít CURRVAL
a NEXTVAL
v následujících konstrukcích:
- Poddotaz v
DELETE
,SELECT
neboUPDATE
prohlášení - Dotaz na pohled nebo materializovaný pohled
- Příkaz SELECT s operátorem DISTINCT
- Příkaz SELECT s klauzulí GROUP BY nebo klauzuli ORDER BY
- A
SELECT
příkaz, který je kombinován s jinýmSELECT
příkaz s UNION,INTERSECT
neboMINUS
nastavit operátor - Klauzule WHERE příkazu SELECT
- VÝCHOZÍ hodnota sloupce v příkazu CREATE TABLE nebo ALTER TABLE
- Podmínka omezení CHECK
subquery
a SET
výše uvedené pravidlo operací by mělo odpovědět na vaši otázku.
A z důvodu NULL, když pseudocolumn
(např. NEXTVAL) se používá s operací SET nebo jakýmikoli jinými pravidly uvedenými výše, výstup je NULL, protože Oracle je nemohl extrahovat kombinováním více výběrů.
Podívejme se na níže uvedený dotaz,
select rownum from dual
union all
select rownum from dual
výsledkem je
ROWNUM
1
1