ELSE - IF ORACLE
Publicado por Ivan (7 intervenciones) el 15/11/2005 12:43:11
Hola a todos:
CREATE OR REPLACE TRIGGER QSMTOWN.T_SINCRO_USUARIOS
BEFORE UPDATE OR INSERT ON USUARIS_GEN
FOR EACH ROW
DECLARE
ID_USUARI NUMBER;
LOGIN_U VARCHAR2(50);
BEGIN
SELECT USERNAME INTO LOGIN_U FROM SEG_USUARIOS WHERE USERNAME = :NEW.LOGIN;
IF(LOGIN_U IS NOT NULL) then
:NEW.OBSERVACIONS := 'EXISTE';
if(:NEW.DESACTIVAT = 1) then
UPDATE SEG_USUARIOS SET FECHA_BAJA = TO_CHAR(sysdate,'DD/MM/YYYY')
WHERE USERNAME = :NEW.LOGIN;
else
UPDATE SEG_USUARIOS SET FECHA_BAJA = NULL
WHERE USERNAME = :NEW.LOGIN;
end if;
ELSE
:NEW.OBSERVACIONS := 'NO EXISTE';
end if;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END T_SINCRO_USUARIOS;
/
Este codigo es simple . Pero no funciona una cosa. Cuando el LOGIN_U existe , el condicional IF lo acoge perfectamente ...pero cuando el SELECT USERNAME INTO LOGIN_U no encuentra nada , el condicional no lo hace pasar por el ELSE. No lo entiendo...si alguie me puede ayudar.
Gracias!
CREATE OR REPLACE TRIGGER QSMTOWN.T_SINCRO_USUARIOS
BEFORE UPDATE OR INSERT ON USUARIS_GEN
FOR EACH ROW
DECLARE
ID_USUARI NUMBER;
LOGIN_U VARCHAR2(50);
BEGIN
SELECT USERNAME INTO LOGIN_U FROM SEG_USUARIOS WHERE USERNAME = :NEW.LOGIN;
IF(LOGIN_U IS NOT NULL) then
:NEW.OBSERVACIONS := 'EXISTE';
if(:NEW.DESACTIVAT = 1) then
UPDATE SEG_USUARIOS SET FECHA_BAJA = TO_CHAR(sysdate,'DD/MM/YYYY')
WHERE USERNAME = :NEW.LOGIN;
else
UPDATE SEG_USUARIOS SET FECHA_BAJA = NULL
WHERE USERNAME = :NEW.LOGIN;
end if;
ELSE
:NEW.OBSERVACIONS := 'NO EXISTE';
end if;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END T_SINCRO_USUARIOS;
/
Este codigo es simple . Pero no funciona una cosa. Cuando el LOGIN_U existe , el condicional IF lo acoge perfectamente ...pero cuando el SELECT USERNAME INTO LOGIN_U no encuentra nada , el condicional no lo hace pasar por el ELSE. No lo entiendo...si alguie me puede ayudar.
Gracias!
Valora esta pregunta


0