Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2010, 12:24
alpha_bill2004
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Información Problemas con IF-ELSE y variables de usuario

Hola estudiosos ORACLE:

Soy nuevo en estos asuntos y estoy haciendo un script en PL/SQL. Mi problema es que al ejecutar mi código no se respetan mis IF-ELSE y siempre se piden todas las variables de usuario que están, dando un resultado que no deseo. Alguien me comentó que eso se debe a que antes de ejecutar cualquier cosa primero se hace un parsing de todas las variables, de modo que los IF-ELSE de nada me sirven. ¿Alguien sabe cómo arreglarlo o modificarlo para que corra como lo muestra la lógica del script?


set serveroutput on

DECLARE
CURSOR c_dba IS SELECT username FROM dba_users WHERE username='&Usuario';
temp varchar2(30);
num_reg int:=0;
login varchar2(8);
pass varchar2(20);
nom varchar2(20);
secnom varchar2(20);
apa varchar2(20);
ama varchar2(20);
num varchar2(20);
opcion varchar(10);

BEGIN
-----VALIDANDO AL USUARIO-----
OPEN c_dba;
LOOP
FETCH c_dba INTO temp;
EXIT WHEN c_dba%NOTFOUND;
num_reg:=num_reg+1;
END LOOP;
CLOSE c_dba;
DBMS_OUTPUT.put_line('Numero de reg : '||num_reg);
IF (num_reg=1) THEN
DBMS_OUTPUT.put_line('Ya existe el usuario.');
opcion:='&Baja_o_cambio';
IF opcion='baja' THEN temp:='BAJA';
ELSIF opcion='cambio' THEN temp:='CAMBIO';
END IF;
DBMS_OUTPUT.put_line(temp);
ELSE
DBMS_OUTPUT.put_line('No existe el usuario. Se creará...');
nom:='&Nombre';
apa:='&aPaterno';
ama:='&aMaterno';
num:='&Numero';
IF(LENGTH(REPLACE(nom, ' ', ''))<>LENGTH(nom))
THEN
secnom:=SUBSTR(nom, INSTR(nom, ' ')+1, LENGTH(nom));
login:= SUBSTR(apa, 1, 1)||SUBSTR(ama, 1, 1)||SUBSTR(nom, 1, 1)||SUBSTR(secnom, 1, 1)||num;
ELSE
login:= SUBSTR(apa, 1, 2)||SUBSTR(ama, 1, 1)||SUBSTR(nom, 1, 1)||num;
END IF;
login:=UPPER(login);
DBMS_OUTPUT.put_line(login);
pass:='metlife'||SUBSTR(TO_CHAR(SYSDATE, 'DD/MM/YYYYY'), 1, 2);
DBMS_OUTPUT.put_line(pass);
END IF;
END;


Les doy las gracias anticipadamente.