Un pequeño ejemplo para describir lo que se puede hacer con PL-SQL
todo lo necesario para ejecutarlo lo tienes en ARCHIVO
1. Escribir un procedimiento
almacenado que permita registrar un préstamo tomando en cuenta que para
registrar un préstamo debe cumplir el
número mínimo de abonos y el préstamo no supere el valor máximo de préstamo.
CREATE OR REPLACE PROCEDURE REG_PRESTAMO(
VSOC_CEDULA IN SOCIO.SOC_CEDULA%TYPE,
VPRE_VALOR IN PRESTAMO.PRE_VALOR%TYPE
) IS
VCONABO CHAR(1);
VCONPRE CHAR(1);
NNUMPRE PRESTAMO.PRE_NUMERO%TYPE;
BEGIN
--verifica la condicion de MINIMO DE ABONOS
BEGIN
SELECT 'T'
INTO VCONABO
FROM SOCIO S,CUENTA C
WHERE S.SOC_CEDULA = C.SOC_CEDULA
AND S.SOC_CEDULA = VSOC_CEDULA
AND C.CTA_NUMABONOS >= (SELECT PAR_VALOR FROM PARAMETRO WHERE PAR_ID = '1');
EXCEPTION WHEN NO_DATA_FOUND THEN
VCONABO := 'F';
END;
--verifica la condicion de maximo de PRESTAMO
BEGIN
SELECT 'T'
INTO VCONPRE
FROM PARAMETRO WHERE PAR_ID = '2'
AND PAR_VALOR >= VPRE_VALOR;
EXCEPTION WHEN NO_DATA_FOUND THEN
VCONPRE := 'F';
END;
IF VCONABO = 'T' AND VCONPRE = 'T' THEN
SELECT NVL(MAX(PRE_NUMERO),0)+1
INTO NNUMPRE
FROM PRESTAMO;
INSERT INTO PRESTAMO
(PRE_NUMERO,PRE_VALOR,PRE_SALDO,PRE_ESTADO,SOC_CEDULA)
VALUES
(NNUMPRE,VPRE_VALOR,VPRE_VALOR,'ACT',VSOC_CEDULA);
COMMIT;
DBMS_OUTPUT.PUT_LINE('-> INSERCIÓN EXITOSA !!!');
END IF;
IF VCONABO = 'T' AND VCONPRE = 'F' THEN
DBMS_OUTPUT.PUT_LINE('-> EL SOCIO NO PUEDE SOLICITAR UN PRESTAMO QUE EXEDA EL LÍMITE');
ELSIF VCONABO = 'F' AND VCONPRE = 'T' THEN
DBMS_OUTPUT.PUT_LINE('-> EL SOCIO NO CUMPLE LA CONDICION DE ABONOS MÍNIMOS');
ELSIF VCONABO = 'F' AND VCONPRE = 'F' THEN
DBMS_OUTPUT.PUT_LINE('-> EL SOCIO NO CUMPLE LA CONDICION DE ABONOS MÍNIMOS NI PRESTAMO MÁXIMO');
END IF;
END REG_PRESTAMO;
No hay comentarios:
Publicar un comentario