Está en la página 1de 1

CREATE OR REPLACE PROCEDURE PRO_PROYECTOS(VID_PROY NUMBER, VDESC_PROY VARCHAR2,

VFECINI_PRO DATE, VFECFIN DATE, VVALOR NUMBER, VTIE_ESTIM NUMBER, VNUM_PER NUMBE
R, VRESPONS NUMBER, VMOTIVO_PROY VARCHAR2,VID_ESTADOPROY NUMBER)
IS
VAR_COUNT NUMBER;
MI_SQL VARCHAR2(300);
MI_SQL_COUNT VARCHAR2(300);
NO_ESTADOS EXCEPTION;
BEGIN
IF VID_PROY<=0 OR VID_PROY IS NULL THEN
dbms_output.put_line('La llave primaria no puede ser vacia');
END IF;
IF VID_ESTADOPROY IS NULL OR VID_ESTADOPROY<=0 THEN
dbms_output.put_line('La llave foranea no puede ser vacia');
END IF;
IF VID_PROY IS NOT NULL AND VID_ESTADOPROY IS NOT NULL THEN
SELECT COUNT(ID_ESTADOPROY)INTO VAR_COUNT FROM ESTADOPROY WHERE ID_ESTADOPROY
=VID_ESTADOPROY;
IF VAR_COUNT = 0 THEN
RAISE NO_ESTADOS;
ELSE
MI_SQL:= 'INSERT INTO PROYECTOS VALUES (:VID_PROY,:VDESC_PROY,:VFECINI_PRO,:V
FECFIN,:VVALOR,:VTIE_ESTIM,:VNUM_PER,:VRESPONS,:VMOTIVO_PROY,:VID_ESTADOPROY)';
EXECUTE IMMEDIATE MI_SQL USING VID_PROY,VDESC_PROY,VFECINI_PRO,VFECFIN,VVALOR
,VTIE_ESTIM,VNUM_PER,VRESPONS,VMOTIVO_PROY,VID_ESTADOPROY;
dbms_output.put_line('LOS DATOS FUERON INSERTADOS CON EXITO');
END IF;
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
dbms_output.put_line('YA EXISTE EL ID ='||VID_PROY||' PARA LA TABLA PROYECTOS
');
dbms_output.put_line('LOS DATOS NO FUERON INGRESADOS');
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('NO SE ENCONTRO NINGUN DATO');
WHEN NO_ESTADOS THEN
dbms_output.put_line('NO SE ENCONTRO EL ESTADO = '||VID_ESTADOPROY);
dbms_output.put_line('LOS DATOS NO FUERON INGRESADOS');
END;
/*/*/*//*/*/*/*/*/*/*/*/*/*/*/*/*/************** LINEA PARA CORRER EL PROCEDIMEI
NTO*************/*/*/*/
BEGIN PRO_PROYECTOS(:ID_PROYECTO,:DESCRIPCION,:FECHA_INI,:FECHA_FIN,:VALOR,:TIEM
PO,:NUM_PERSONAS,:RESP,:MOTIVO,:ESTADO_PROYECT);COMMIT;END;

También podría gustarte