vista usuario una transponer sobre registros permisos listar grants filas esquema ejemplos dinamico dar convertir columnas 10g sql oracle insert

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