Creo que la siguiente consulta funciona, ¡no la he probado!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
No estoy seguro, si te ayuda de alguna manera.
Para, GENERATED ALWAYS AS IDENTITY
Oracle utiliza internamente una secuencia solamente. Y las opciones de Secuencia general también se aplican a esto.
NEXTVAL se usa para obtener la siguiente secuencia disponible y, obviamente, es una pseudocolumna.
Lo siguiente es de Oracle
No puede usar CURRVAL
y NEXTVAL
en las siguientes construcciones:
- Una subconsulta en un
DELETE
,SELECT
oUPDATE
declaración - Una consulta de una vista o de una vista materializada
- Una instrucción SELECT con el operador DISTINCT
- Una instrucción SELECT con una cláusula GROUP BY o una cláusula ORDER BY
- Un
SELECT
declaración que se combina con otroSELECT
declaración con la UNIÓN,INTERSECT
, oMINUS
establecer operador - La cláusula WHERE de una sentencia SELECT
- Valor DEFAULT de una columna en una sentencia CREATE TABLE o ALTER TABLE
- La condición de una restricción CHECK
La subquery
y SET
la regla de operaciones anterior debería responder a su pregunta.
Y por la razón de NULL, cuando pseudocolumn
(por ejemplo, NEXTVAL) se usa con una operación SET o cualquier otra regla mencionada anteriormente, la salida es NULL, ya que Oracle no pudo extraerlos en efecto con la combinación de selecciones múltiples.
Veamos la siguiente consulta,
select rownum from dual
union all
select rownum from dual
el resultado es
ROWNUM
1
1