Je crois que la requête ci-dessous fonctionne, je n'ai pas testé !
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Je ne sais pas si cela vous aide d'une manière ou d'une autre.
Pour, GENERATED ALWAYS AS IDENTITY
Oracle utilise uniquement une séquence en interne. Et les options sur la séquence générale s'appliquent également à cela.
NEXTVAL est utilisé pour récupérer la prochaine séquence disponible, et il s'agit évidemment d'une pseudo-colonne.
Ce qui suit provient d'Oracle
Vous ne pouvez pas utiliser CURRVAL
et NEXTVAL
dans les constructions suivantes :
- Une sous-requête dans un
DELETE
,SELECT
, ouUPDATE
déclaration - Une requête d'une vue ou d'une vue matérialisée
- Une instruction SELECT avec l'opérateur DISTINCT
- Une instruction SELECT avec une clause GROUP BY ou une clause ORDER BY
- Un
SELECT
instruction qui est combinée avec un autreSELECT
instruction avec l'UNION,INTERSECT
, ouMINUS
définir l'opérateur - La clause WHERE d'une instruction SELECT
- Valeur par défaut d'une colonne dans une instruction CREATE TABLE ou ALTER TABLE
- La condition d'une contrainte CHECK
La subquery
et SET
la règle d'opérations ci-dessus devrait répondre à votre question.
Et pour la raison de NULL, lorsque pseudocolumn
(par exemple, NEXTVAL) est utilisé avec une opération SET ou toute autre règle mentionnée ci-dessus, la sortie est NULL, car Oracle n'a pas pu les extraire en effet en combinant plusieurs sélections.
Voyons la requête ci-dessous,
select rownum from dual
union all
select rownum from dual
le résultat est
ROWNUM
1
1