ayuda con pl/sql
Reenvio un mensaje que postee en otra seccion del foro por error. espero que me podais ayudar.
Hola, estoy aprendiendo pl/sql y la verdad es que no se me da nada bien. El ejercicio que me han planteado es que introduzca en una tabla el nombre y la edad de los alummnos de mi clase y que los datos me los pidan por pantalla.
hago un bucle pero solo me pide una vez que introduzca datos y me llena la tabla 25 veces (alumnos en mi clase) con el mismo registro.
¿que puedo hacer?
Gracias por adelantado.
Hola, estoy aprendiendo pl/sql y la verdad es que no se me da nada bien. El ejercicio que me han planteado es que introduzca en una tabla el nombre y la edad de los alummnos de mi clase y que los datos me los pidan por pantalla.
hago un bucle pero solo me pide una vez que introduzca datos y me llena la tabla 25 veces (alumnos en mi clase) con el mismo registro.
¿que puedo hacer?
Gracias por adelantado.
Prueba pidiendo los datos dentro del bucle con un &.
for i=1 to 25
insert into TABLA(nombre,edad) values (&nombre, &edad)
endfor
for i=1 to 25
insert into TABLA(nombre,edad) values (&nombre, &edad)
endfor
De esa forma hace lo que comentaba al principio, adjunto el codigo y el resultado:
CODIGO
--prueba del foro
DROP TABLE TABLA;
CREATE TABLE TABLA
(
NOMBRE VARCHAR2(20),
EDAD NUMBER
);
BEGIN
FOR i in 1..5 LOOP
insert into TABLA values (&NOMBRE, &EDAD);
END LOOP;
COMMIT;
END;
/
Como resultado nos pide por teclado solo una vez que introduzcamos datos, lo cual hacemos y nos copia 5 veces el mismo dato en la tabla dando como resultado esto:
SQL> START D:\FORO.TXT;
Tabla borrada.
Tabla creada.
Introduzca un valor para nombre: \'JAIME\'
Introduzca un valor para edad: 28
antiguo 3: insert into TABLA values (&NOMBRE, &EDAD);
nuevo 3: insert into TABLA values (\'JAIME\', 28);
Procedimiento PL/SQL terminado correctamente.
SQL> SELECT * FROM TABLA;
NOMBRE EDAD
-------------------- ----------
JAIME 28
JAIME 28
JAIME 28
JAIME 28
JAIME 28
CODIGO
--prueba del foro
DROP TABLE TABLA;
CREATE TABLE TABLA
(
NOMBRE VARCHAR2(20),
EDAD NUMBER
);
BEGIN
FOR i in 1..5 LOOP
insert into TABLA values (&NOMBRE, &EDAD);
END LOOP;
COMMIT;
END;
/
Como resultado nos pide por teclado solo una vez que introduzcamos datos, lo cual hacemos y nos copia 5 veces el mismo dato en la tabla dando como resultado esto:
SQL> START D:\FORO.TXT;
Tabla borrada.
Tabla creada.
Introduzca un valor para nombre: \'JAIME\'
Introduzca un valor para edad: 28
antiguo 3: insert into TABLA values (&NOMBRE, &EDAD);
nuevo 3: insert into TABLA values (\'JAIME\', 28);
Procedimiento PL/SQL terminado correctamente.
SQL> SELECT * FROM TABLA;
NOMBRE EDAD
-------------------- ----------
JAIME 28
JAIME 28
JAIME 28
JAIME 28
JAIME 28
Intenta vaciar los datos despues de la orden insert, igual así al intentar hacer la inserción cunado vuelva
a pasar por el bucle y vea que son nulos te os vuelve a pedir. No se me ocure nada más.
Suerte.
a pasar por el bucle y vea que son nulos te os vuelve a pedir. No se me ocure nada más.
Suerte.
