Jeg tror, at nedenstående forespørgsel virker, jeg har ikke testet!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Ikke sikker på, om det hjælper dig på nogen måde.
For, GENERERET ALTID SOM IDENTITET
Oracle internt bruger kun en Sequence. Og mulighederne for generel Sequence gælder også for dette.
NEXTVAL bruges til at hente den næste tilgængelige sekvens, og det er naturligvis en pseudokolonne.
Nedenstående er fra Oracle
Du kan ikke bruge CURRVAL
og NEXTVAL
i følgende konstruktioner:
- En underforespørgsel i en
DELETE
,VÆLG
ellerOPDATERING
erklæring - En forespørgsel efter en visning eller en materialiseret visning
- En SELECT-sætning med DISTINCT-operatoren
- En SELECT-sætning med en GROUP BY-sætning eller ORDER BY-sætning
- En
VÆLG sætning, der er kombineret med en anden
SELECT
sætning med UNION,INTERSECT
ellerMINUS
sæt operatør - WHERE-sætningen i en SELECT-sætning
- STANDARDværdi for en kolonne i en CREATE TABLE- eller ALTER TABLE-sætning
- Betingelsen for en CHECK-begrænsning
underforespørgslen
og SET
operationsreglen ovenfor bør besvare dit spørgsmål.
Og af grunden til NULL, når pseudocolumn
(f.eks. NEXTVAL) bruges med en SET-operation eller andre regler nævnt ovenfor, outputtet er NULL, da Oracle ikke kunne udtrække dem ved at kombinere flere valg.
Lad os se nedenstående forespørgsel,
select rownum from dual
union all
select rownum from dual
resultatet er
ROWNUM
1
1