viernes, 17 de diciembre de 2010

Record, Vectores y demas....

En este ejemplo tenemos manejos de un TABLE manejado con regiustros y luego manejado por cursor.

Saludos.

PROCEDURE martin_prueba
IS
CURSOR C_cursor IS
SELECT CAPU_CD_PRODUCTO,
CAPU_CARP_CD_RAMO,
CAPU_DE_PRODUCTO,
CAPU_NU_DURACION_CONTRATO,
CAPU_IN_RECALCULO_RECARGO
FROM CART_PRODUCTOS
WHERE ROWNUM<20
ORDER BY CAPU_CD_PRODUCTO ASC;

TYPE ty_cursor is record ( CAPU_CD_PRODUCTO CART_PRODUCTOS.CAPU_CD_PRODUCTO%TYPE,
CAPU_CARP_CD_RAMO CART_PRODUCTOS.CAPU_CARP_CD_RAMO%TYPE,
CAPU_DE_PRODUCTO CART_PRODUCTOS.CAPU_DE_PRODUCTO%TYPE,
CAPU_NU_DURACION_CONTRATO CART_PRODUCTOS.CAPU_NU_DURACION_CONTRATO%TYPE,
CAPU_IN_RECALCULO_RECARGO CART_PRODUCTOS.CAPU_IN_RECALCULO_RECARGO%TYPE
);

TYPE array_cursor IS TABLE OF C_cursor%ROWTYPE INDEX BY BINARY_INTEGER;
TYPE tb_cursor IS TABLE OF ty_cursor INDEX BY BINARY_INTEGER;
tcursor tb_cursor;
tcursor_array_cursor array_cursor;
i number(10) :=0;
-- q C_cursor;
begin
i:=1;
for q in C_cursor loop
--Aca cargo el record
tcursor(i).CAPU_CD_PRODUCTO:=q.CAPU_CD_PRODUCTO;
tcursor(i).CAPU_CARP_CD_RAMO:=q.CAPU_CARP_CD_RAMO;
tcursor(i).CAPU_DE_PRODUCTO:=q.CAPU_DE_PRODUCTO;
tcursor(i).CAPU_NU_DURACION_CONTRATO:=q.CAPU_NU_DURACION_CONTRATO;
tcursor(i).CAPU_IN_RECALCULO_RECARGO:=q.CAPU_IN_RECALCULO_RECARGO;
--Aca cargo el record

--Aca cargo el table del cursor
tcursor_array_cursor(i).CAPU_CD_PRODUCTO:=q.CAPU_CD_PRODUCTO;
tcursor_array_cursor(i).CAPU_CARP_CD_RAMO:=q.CAPU_CARP_CD_RAMO;
tcursor_array_cursor(i).CAPU_DE_PRODUCTO:=q.CAPU_DE_PRODUCTO;
tcursor_array_cursor(i).CAPU_NU_DURACION_CONTRATO:=q.CAPU_NU_DURACION_CONTRATO;
tcursor_array_cursor(i).CAPU_IN_RECALCULO_RECARGO:=q.CAPU_IN_RECALCULO_RECARGO;
--Aca cargo el table del cursor
i:=i+1;
end loop;

--Esto es usando el cursor y el record--
FOR i IN tcursor.FIRST .. tcursor.LAST LOOP
DBMS_OUTPUT.PUT_LINE('CAPU_CD_PRODUCTO=' || TCURSOR(i).CAPU_CD_PRODUCTO);
DBMS_OUTPUT.PUT_LINE('CAPU_CARP_CD_RAMO=' || TCURSOR(i).CAPU_CARP_CD_RAMO);
DBMS_OUTPUT.PUT_LINE('CAPU_DE_PRODUCTO=' || TCURSOR(i).CAPU_DE_PRODUCTO);
DBMS_OUTPUT.PUT_LINE('CAPU_NU_DURACION_CONTRATO=' || TCURSOR(i).CAPU_NU_DURACION_CONTRATO);
DBMS_OUTPUT.PUT_LINE('CAPU_IN_RECALCULO_RECARGO=' || TCURSOR(i).CAPU_IN_RECALCULO_RECARGO);
END LOOP;
--Esto es usando el cursor y el record--

--Esto es usando el cursor y el table of del cursor--
FOR i IN tcursor_array_cursor.FIRST .. tcursor_array_cursor.LAST LOOP
DBMS_OUTPUT.PUT_LINE('CAPU_CD_PRODUCTO=' || tcursor_array_cursor(i).CAPU_CD_PRODUCTO);
DBMS_OUTPUT.PUT_LINE('CAPU_CARP_CD_RAMO=' || tcursor_array_cursor(i).CAPU_CARP_CD_RAMO);
DBMS_OUTPUT.PUT_LINE('CAPU_DE_PRODUCTO=' || tcursor_array_cursor(i).CAPU_DE_PRODUCTO);
DBMS_OUTPUT.PUT_LINE('CAPU_NU_DURACION_CONTRATO=' || tcursor_array_cursor(i).CAPU_NU_DURACION_CONTRATO);
DBMS_OUTPUT.PUT_LINE('CAPU_IN_RECALCULO_RECARGO=' || tcursor_array_cursor(i).CAPU_IN_RECALCULO_RECARGO);
END LOOP;
--Esto es usando el cursor y el table of del cursor--
end;

1 comentario:

  1. buenisimo... nunca esta demá lo de los registros, vectores y demas, siempre tengo dudas al respecto y este es un buen ejemplo

    ResponderEliminar