sábado, 28 de abril de 2012

PL-SQL

Practica PL-SQL con lo realizado en clases... mira este archivo que te va a ser muy útil...

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