pregunta sobre PL/SQL y los cursores con parametros
Por mas que miro no soy capaz de ver que es lo que esta mal en el codigo para que no me realize bien el select. solo me tendria que mostrar dos registros de la tabla, sin embargo me los enseña todos. Se compila bien, solo que no me hace bien el select. Pego el codigo, no es muy extenso
create or replace procedure cursorParametros as
cursor cursa (nifi varchar2 default \'11111111\', nombre varchar2 default \'sandra\') is select * from alumnos
where alumnos.PK_NIF=nifi or alumnos.NOMBRE= nombre;
registro alumnos%rowtype;
nifAlum varchar2(8) default \'11111111\';
nombre varchar2(30) default \'sandra\';
BEGIN
open cursa(nifAlum, nombre);
loop
fetch cursa into registro;
exit when cursa%notfound;
dbms_output.PUT_LINE(registro.pk_nif || \' \' || registro.nombre);
end loop;
close cursa;
EXCEPTION
WHEN OTHERS THEN
dbms_output.PUT_LINE(\'ERROR FATAL\');
END cursorParametros;
create or replace procedure cursorParametros as
cursor cursa (nifi varchar2 default \'11111111\', nombre varchar2 default \'sandra\') is select * from alumnos
where alumnos.PK_NIF=nifi or alumnos.NOMBRE= nombre;
registro alumnos%rowtype;
nifAlum varchar2(8) default \'11111111\';
nombre varchar2(30) default \'sandra\';
BEGIN
open cursa(nifAlum, nombre);
loop
fetch cursa into registro;
exit when cursa%notfound;
dbms_output.PUT_LINE(registro.pk_nif || \' \' || registro.nombre);
end loop;
close cursa;
EXCEPTION
WHEN OTHERS THEN
dbms_output.PUT_LINE(\'ERROR FATAL\');
END cursorParametros;
Por lo que veo estas usando parámetros sin necesidad.....proba sacandole los parà metros....
Ademas esa es la peor forma de usar un cursor....
Tenes los Bucles de Cursor...
FOR R IN CURSA LOOP
END LOOP;
R es una seudo variable que tiene la forma:
resultado_del_query%rowtype;
osea..dentro del cursor podes hacer
R.Coumna para obtener los valores resultantes de la consulta...
Espero que te sirva....
Cualquir cosa escribime
Salu2
Ademas esa es la peor forma de usar un cursor....
Tenes los Bucles de Cursor...
FOR R IN CURSA LOOP
END LOOP;
R es una seudo variable que tiene la forma:
resultado_del_query%rowtype;
osea..dentro del cursor podes hacer
R.Coumna para obtener los valores resultantes de la consulta...
Espero que te sirva....
Cualquir cosa escribime
Salu2
Ya se que este cursor con parametros es innecesario, solo lo hago para probar como funciona. Se que tu respuesta es correcta, y que aqui no es necesario, pero me gustaria me dijera el error que hay en ese procedimiento.
como he dicho antes, me tendria que devolver solo dos registros de una tabla y me los devuelve todos. Es como si no se hiciera la condicion WHERE y no se porque.
saludos
como he dicho antes, me tendria que devolver solo dos registros de una tabla y me los devuelve todos. Es como si no se hiciera la condicion WHERE y no se porque.
saludos
