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ÆLGellerOPDATERINGerklæ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 andenSELECTsætning med UNION,INTERSECTellerMINUSsæ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