Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta.

Estas en el tema de Consulta. en el foro de Bases de Datos General en Foros del Web. Hola Amigos del foro Teno el sigte problema con respento a un cursor. Me repite el mensaje "El usuario esta autorizado".Aca va el codigo. create ...
  #1 (permalink)  
Antiguo 07/06/2006, 12:06
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años, 7 meses
Puntos: 0
Consulta.

Hola Amigos del foro
Teno el sigte problema con respento a un cursor. Me repite el mensaje "El usuario esta autorizado".Aca va el codigo.

create or replace procedure datos (u1 in NUMBER,p1 in varchar2) AS

vd_codigo_usuario NUMBER(38) ;
vd_clave varchar2(13);


cursor c_usuario
IS
select codigo_usuario, clave
from usuarios;

Begin
dbms_output.put_line(' voy al inicio');
open c_usuario;

Loop
FETCH c_usuario into vd_codigo_usuario, vd_clave;
Exit when c_usuario%notfound;
If (vd_codigo_usuario=u1) and (vd_clave=p1) then

dbms_output.put_line (vd_codigo_usuario||vd_clave);
dbms_output.put_line('El usuario esta autorizado');
Else

dbms_output.put_line(' El usuario no existe');

End If;

end loop;
close c_usuario;
End;

gracias..............
  #2 (permalink)  
Antiguo 07/06/2006, 15:04
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Hola apolo64, como tus datos de entrada son los mismos que el de la tabla a la que haces la consulta, mejor, ponle de ese tipo.
Si el código de usuario es number, pasalo a char a la hora de que "imprima" en pantalla :

Cita:
create or replace procedure datos (
u1 IN usuarios.codigo_usuario%type,
p1 in usuarios.clave%type) AS

vd_codigo_usuario usuarios.codigo_usuario%type ;
vd_clave usuarios.clave%type;

cursor c_usuario
IS
select codigo_usuario, clave
from usuarios;

Begin
dbms_output.put_line(' voy al inicio');
open c_usuario;

Loop
FETCH c_usuario into vd_codigo_usuario, vd_clave;
Exit when c_usuario%notfound;
If (vd_codigo_usuario=u1) and (vd_clave=p1) then

dbms_output.put_line (to_char(vd_codigo_usuario)||' '||vd_clave);
dbms_output.put_line('El usuario esta autorizado');
Else

dbms_output.put_line(' El usuario no existe');

End If;

end loop;
close c_usuario;
End;
Imagino que estas practicando o algo asi...
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 07/06/2006, 15:36
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años, 7 meses
Puntos: 0
consulta

Hola envio el codigo nuevamente. el problema que sucede es que no muestra cuando el usuario no esta solo manda el mesanje del "usuario autorizado" y no envia el mensaje "el usuario no existe". No cacho que puede ser de todas formas envio el codigo.Grax
create or replace procedure datos (u1 in NUMBER,p1 in varchar2) AS
cursor c_usuario
IS
select codigo_usuario, clave
from usuarios where codigo_usuario=u1 and clave=p1;

Begin
dbms_output.put_line(' voy al inicio');
open c_usuario;

if c_usuario%notfound then
dbms_output.put_line(' El usuario no existe');
else
dbms_output.put_line('El usuario esta autorizado');
End If;

close c_usuario;
End;
  #4 (permalink)  
Antiguo 08/06/2006, 08:27
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Hola:
Sabes?, punto de vista personal, no le veo el sentido que uses un cursor, solo quieres saber si el usuario existe o no, verdad?

Cita:
create or replace procedure datos
(u1 in NUMBER,
p1 in varchar2) AS

nCont NUMBER;

Begin
dbms_output.put_line(' voy al inicio');

select count(*) INTO nCont
from usuarios
where codigo_usuario=u1 and clave=p1;

if nCont=0 then
dbms_output.put_line(' El usuario no existe');
else
dbms_output.put_line('El usuario esta autorizado');
End If;

End;
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:29.