Ich glaube, die folgende Abfrage funktioniert, ich habe sie nicht getestet!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Ich bin mir nicht sicher, ob es dir irgendwie hilft.
Für GENERATED ALWAYS AS IDENTITY
Oracle verwendet intern nur eine Sequenz. Und die Optionen zur allgemeinen Sequenz gelten auch dafür.
NEXTVAL wird verwendet, um die nächste verfügbare Sequenz zu holen, und offensichtlich ist es eine Pseudospalte.
Das Folgende ist von Oracle
Sie können CURRVAL
nicht verwenden und NEXTVAL
in den folgenden Konstrukten:
- Eine Unterabfrage in einem
DELETE
,SELECT
, oderUPDATE
Erklärung - Eine Abfrage einer Ansicht oder einer materialisierten Ansicht
- Eine SELECT-Anweisung mit dem DISTINCT-Operator
- Eine SELECT-Anweisung mit einer GROUP BY-Klausel oder ORDER BY-Klausel
- Ein
SELECT
-Anweisung, die mit einem anderenSELECT
kombiniert wird -Anweisung mit der UNION,INTERSECT
, oderMINUS
Set-Operator - Die WHERE-Klausel einer SELECT-Anweisung
- DEFAULT-Wert einer Spalte in einer CREATE TABLE- oder ALTER TABLE-Anweisung
- Die Bedingung einer CHECK-Einschränkung
Die subquery
und SET
Die obige Betriebsregel sollte Ihre Frage beantworten.
Und aus dem Grund für NULL, wenn pseudocolumn
(z. B. NEXTVAL) mit einer SET-Operation oder anderen oben erwähnten Regeln verwendet wird, ist die Ausgabe NULL, da Oracle sie nicht effektiv mit der Kombination mehrerer Auswahlen extrahieren konnte.
Sehen wir uns die folgende Abfrage an,
select rownum from dual
union all
select rownum from dual
das Ergebnis ist
ROWNUM
1
1