pregunta sobre PL/SQL y los cursores con parametros

occiso
24 de Junio del 2005
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;

Pablo Ponte Miserendino
24 de Junio del 2005
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

occiso
24 de Junio del 2005
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

sys
24 de Junio del 2005
si lanzas esa misma select sola, también te ocurre lo mismo??

occiso
24 de Junio del 2005
si me pasa lo mismo.

lo mas curioso es que si utilizo solo una variable la cosa va bien. No se si tendra algo que ver el utilizar dos variables para dos campos de una misma tabla.