Parametro de tipo Collection en un Stored Procedure de Oracle

geobasis
14 de Diciembre del 2005
Hola a todos.

Tengo una situacion en la que necesito ejecutar un procedimiento almacenado en una BD Oracle desde .Net el problema es que este procedimiento almacenado necesita recibir como parametros de entrada Collections de Objetos Personalizados.

Para que tengan una idea el Procedimiento almacenado en Oracle es este:

create type Verification as object
(
pDepartmentId varchar2(100),
pPeriod number,
pFunctionType varchar2(100),
pVerificationDate date,
pNumber number,
pSectionNumber number,
pElaboratedBy number,
pAuthorizedBy number,
pAuthorizedDate date,
pDependencyId varchar2(100)
);

CREATE TYPE Array_of_Verifications AS varray(100) OF Verification;

procedure SincronizeVerifications(Verifications ARRAY_OF_VERIFICATIONS) is
i number;
verif Verification;
elements int;
nelements int;
begin
i:= Verifications.First();
elements := Verifications.Count();
nelements := 0;

while(nelements<elements) loop
verif := Verifications(i);
insert into ESW_INVENTARIO_FISICO(EMPRESA,PERIODO,TIPO_FUNCION,NUMERO,FECHA, UBICACION_FISICA,ELABORADO_POR,AUTORIZADO_POR,FECHA_AUTORIZACION,SUBSECCION)
values(verif.pDepartmentId,verif.pPeriod,verif.pFunctionType,verif.pNumber,verif.pVerificationDate,verif.pSectionNumber, verif.pElaboratedBy,verif.pAuthorizedBy,verif.pAuthorizedDate,verif.pDependencyId);

i:= Verifications.Next(i);
nelements:= nelements + 1;
end loop;
end SincronizeVerifications;

Desde PL/SQL lo invoco asi:

declare
-- Non-scalar parameters require additional processing
verifications ARRAY_OF_VERIFICATIONS;
verif Verification;
begin
-- Call the procedure
verif := Verification('Ecuador',15,'AG',TO_DATE('25/12/2005','DD/MM/YYYY'),45,23,10000,1254,TO_DATE('10/12/2005','DD/MM/YYYY'),'Bodega');
verifications := ARRAY_OF_VERIFICATIONS(verif,verif,verif,verif,verif,verif);

sincronizeverifications(verifications => verifications);
end;

y funciona bien, lo que necesito saber es como hago esto ultimo desde .Net; es decir construir la Collection de Verificaciones y enviarla como parametro al Stored Procedure utilizando System.Data.OracleClient.

De antemano muy agradecido por cualquier ayuda que me puedan dar.