Sentencia SQL

Es esto posible:

"INSERT INTO sd (clase,nombre,apellidos) VALUES (@clase,(SELECT nombre,apellidos FROM alumnos))"

la idea es pasar a una tabla un poco mas compleja datos de otra tabla y datos de variables en parametros es posiible?

Un saludo y gracias
A mi me parece que no, pero es mucho mas sencillo exportar los datos a un fichero texto y ya con eso haces un script para meter los datos, utilizando SOURCE. Aunque creo que hay una forma de hacer eso pero no como tu dices...
Seria tal que asi

INSERT INTO sd nombre,apellidos SELECT nombre,apellidos FROM alumnos

Pero claro sin el parametro para clase,la cuestion no es esportar datos o hacer primero un select volcar a variables y luego un insert con las variables la idea era minimizar codigo.

Si se puede agradeceria
Saludos.

Si no estoy oxidado del todo:

INSERT INTO SD (NOMBRE,APELLIDOS) VALUES =(SELECT NOMBRE, APELLIDOS FROM ALUMNOS)

Aun así no estoy del todo seguro, ¿no sería más fácil hacerlo con cursores usando pl/sql?

Requiescat In Pain.
Entiendo que tenías una tabla de alumnos con los campos nombre y apellidos, y ahora tienes una a la que le has añadido el campo clase que es clave ajena en otra tabla y debe ser seleccionado uno por uno.

Puedes hacer esto.

insert into sd(nombre, apellidos) select nombre, apellidos from alumnos;


Si pones el parámetro @clase en la sentencia adquiriría un valor fijo para todas las filas de la sentencia.

También puedes hacer lo siguiente para montar las inserciones parametrizadas y luego lanzar todo el script que has generado.

select 'insert into sd(clase, nombre, apellidos) values (@clase, ''' || nombre || ''', ''' || apellidos || ''');' from alumnos;
¿No seria suficiente con?

INSERT INTO sd (clase,nombre,apellidos) SELECT 'lo que quieras poner' as clase ,nombre,apellidos FROM alumnos

es decir añadir a la consulta una columna fija
Harl escribió:¿No seria suficiente con?

INSERT INTO sd (clase,nombre,apellidos) SELECT 'lo que quieras poner' as clase ,nombre,apellidos FROM alumnos

es decir añadir a la consulta una columna fija


Si lo haces así, por ejemplo.

insert into sd (clase, nombre, apellidos) select '1', nombre, apellidos from alumnos


En la salida todos los alumnos tendrán la clase como '1' y la idea entiendo que es que cada uno esté en la clase que le corresponda, no todos en la misma. Ejemplo de la salida de la sentencia anterior.

'1' 'Pepito' 'Perez Sánchez'
'1' 'Juan' 'Antuñez Somorra'
.....
Este esta bien asi funciona
INSERT INTO sd (clase, nombre, apellidos) SELECT @clase, nombre, apellidos FROM alumnos WHERE clase=32


Gracias a todos.

Un saludo
insert into sd(clase,nombre,apellido) values (clase,(select nombre from tabla_adecuada),(select apellido from tabla_adecuada));

asi funcionaría,no??
8 respuestas