Procediniento sencillo que busca un registro coincidente con el argumento p_email que proviene de un servlet, si no encuntra coincidencias, creará un nuevo registro.
CREATE OR REPLACE PROCEDURE INSERTA_CLIENTE(p_idCliente out Cliente.idCliente%TYPE, p_nombre in Cliente.Nombre%TYPE,
p_apaterno in Cliente.APaterno%TYPE, p_amaterno in Cliente.AMaterno%TYPE, p_email in Cliente.Email%TYPE,
p_estado in Cliente.Estado%TYPE,p_ciudad in Cliente.Ciudad%TYPE,
p_pwd in Cliente.Pwd%TYPE)
AS
aux Cliente.idCliente%TYPE;
BEGIN
SELECT idCliente INTO aux FROM Cliente
WHERE lower(email)= lower(p_email);
p_idCliente:=-1;
EXCEPTION
WHEN NO_DATA_FOUND THEN // (NO_DATA_FOUND es una constante de oracle) Si no encuentra ningun registro ...
INSERT INTO Cliente VALUES(SEQ_IDCLIENTE.NEXTVAL,p_nombre,p_apaterno,
p_amaterno,p_email,p_estado,p_ciudad,p_pwd);
SELECT SEQ_IDCLIENTE.CURRVAL INTO p_idCliente FROM dual; //SEQ_IDCLIENTE.CURRVAL es un objeto de oracle que crea una, secuencia de mumeros, su uso tine ciertas restricciones,dual es umna tabla auxiliar de oracle que se crea temporalmente.
COMMIT;
END INSERTA_CLIENTE;
Finalmente el procedimiento devuelve un valor de salida llamado p_idCliente
jueves, 1 de marzo de 2007
Suscribirse a:
Entradas (Atom)