usuario - Oracle SQL: ¿inserta varias filas en una tabla con una declaración?
pivot oracle ejemplos (4)
Me gustaría hacer insertar N filas que sean todas idénticas, excepto que uno de los valores es diferente. Específicamente, esto es lo que estoy intentando:
insert into attribute_list (id,value,name)
values
(
select (id,''Y'',''is_leveled'') from value_list where val >= 50
);
Por lo tanto, para cada valor que tenga un val> = 50, insertaría una fila en la lista de atributos. ¿Se puede hacer esto con una declaración de inserción o debo generar manualmente estas inserciones en Excel?
(nota: este es un ejemplo cocinado simplificado para aclarar el problema, por lo que no es necesario atacar la innecesaria de este caso específico)
¡Absolutamente puedes hacer esto en una sola declaración!
Prueba esto:
INSERT INTO attribute_list (id, value, name)
SELECT id, ''Y'', ''is_leveled''
FROM value_list WHERE val >= 50
Necesitas un INSERT de SELECT. Para hacerlo debes omitir los VALUES
y simplemente hacer:
insert into attribute_list (id,value,name)
select (id,''Y'',''is_leveled'') from value_list where val >= 50;
Aquí hay un ejemplo: http://psoug.org/reference/insert.html
Para eso están los bucles FOR .
DECLARE
x NUMBER := 100;
BEGIN
FOR i IN 1..10 LOOP
IF MOD(i,2) = 0 THEN -- i is even
INSERT INTO temp VALUES (i, x, ''i is even'');
ELSE
INSERT INTO temp VALUES (i, x, ''i is odd'');
END IF;
x := x + 100;
END LOOP;
COMMIT;
END;
Puede hacer un SELECT ... INTO
si puede consultar los datos. De lo contrario, para crear datos necesitaría usar PL / SQL.
Si tiene los datos, intente:
select id,''Y'',''is_leveled''
INTO attribute_list
from value_list where val >= 50