Sei sulla pagina 1di 3

CREATE TABLE FACTURAS

(
CO_ID INTEGER,
CARGO_FIJO FLOAT,

CONSTRAINT CONTRATO_PK PRIMARY KEY (CO_ID)

);

CREATE TABLE CLIENTE


(
CO_ID INTEGER,
NOMBRE VARCHAR2(50),
CELULAR INTEGER,
NRO_DOCUMENTO INTEGER,

CONSTRAINT CONTRATO_FK
FOREIGN KEY (CO_ID)
REFERENCES FACTURAS(CO_ID)
);

CREATE TABLE DATOS_TEMP


(
CF_ANT FLOAT,
CF_NVO FLOAT,
NRO_ANT INTEGER,
NRO_NVO INTEGER
);

INSERT INTO FACTURAS (CO_ID,CARGO_FIJO) VALUES (0,12.56);


INSERT INTO FACTURAS (CO_ID,CARGO_FIJO) VALUES (1,80.16);
INSERT INTO FACTURAS (CO_ID,CARGO_FIJO) VALUES (2,91);
INSERT INTO FACTURAS (CO_ID,CARGO_FIJO) VALUES (3,6.5);
INSERT INTO FACTURAS (CO_ID,CARGO_FIJO) VALUES (4,0);

INSERT INTO CLIENTE (CO_ID,NOMBRE,CELULAR,NRO_DOCUMENTO) VALUES


(0,'JOSE',980881575,70312621);
INSERT INTO CLIENTE (CO_ID,NOMBRE,CELULAR,NRO_DOCUMENTO) VALUES
(1,'KARINA',980839275,70374441);
INSERT INTO CLIENTE (CO_ID,NOMBRE,CELULAR,NRO_DOCUMENTO) VALUES
(2,'EDGAR',980921575,71274621);
INSERT INTO CLIENTE (CO_ID,NOMBRE,CELULAR,NRO_DOCUMENTO) VALUES
(3,'MONICA',938181575,70384621);
INSERT INTO CLIENTE (CO_ID,NOMBRE,CELULAR,NRO_DOCUMENTO) VALUES
(4,'JUAN',980889375,70374191);
CREATE OR REPLACE PROCEDURE PROCEDIMIENTO1(PO_CURSOR OUT
SYS_REFCURSOR,
PO_CODERR OUT NUMBER,
PO_MSGERR OUT VARCHAR2)IS

CURSOR C1 IS
SELECT CO_ID,CARGO_FIJO FROM FACTURAS;

v_cfant FLOAT;
v_cfnvo FLOAT;

BEGIN

PO_CODERR := 0;
PO_MSGERR := 'PROCESO EXITOSO';

BEGIN
DELETE FROM DATOS_TEMP;
COMMIT;
END;

FOR c IN C1 LOOP

SELECT CARGO_FIJO INTO v_cfant FROM FACTURAS WHERE CO_ID = c.CO_ID;

IF v_cfant > 70 THEN

v_cfnvo := v_cfant-(v_cfant*(5/100));

INSERT INTO DATOS_TEMP (CF_ANT,CF_NVO) VALUES (v_cfant,v_cfnvo);


COMMIT;

END IF;

END LOOP;

OPEN PO_CURSOR FOR


SELECT CF_ANT,CF_NVO FROM DATOS_TEMP;

EXCEPTION
WHEN OTHERS THEN
PO_CODERR := -1;
PO_MSGERR := 'CONSULTA INCORRECTA';
END;
CREATE OR REPLACE PROCEDURE PROCEDIMIENTO2(PO_CURSOR OUT
SYS_REFCURSOR,
PO_CODERR OUT NUMBER,
PO_MSGERR OUT VARCHAR2)IS

CURSOR C1 IS
SELECT CO_ID,CELULAR FROM CLIENTE WHERE NOMBRE = 'JOSE';

V_NROANT INTEGER;
V_NRONVO INTEGER;

BEGIN

PO_CODERR := 0;
PO_MSGERR := 'PROCESO EXITOSO';

BEGIN
DELETE FROM DATOS_TEMP;
COMMIT;
END;

FOR c IN C1 LOOP

V_NROANT := c.CELULAR;

UPDATE CLIENTE
SET CELULAR = 99999
WHERE CO_ID = c.CO_ID;
COMMIT;

SELECT CELULAR INTO V_NRONVO FROM CLIENTE WHERE CO_ID = c.CO_ID;

INSERT INTO DATOS_TEMP (NRO_ANT,NRO_NVO) VALUES


(V_NROANT,V_NRONVO);
COMMIT;

END LOOP;

OPEN PO_CURSOR FOR


SELECT NRO_ANT,NRO_NVO FROM DATOS_TEMP;

EXCEPTION
WHEN OTHERS THEN
PO_CODERR := -1;
PO_MSGERR := 'CONSULTA INCORRECTA';
END;

Potrebbero piacerti anche