none
enviar arrayslist a stored procedure - oracle RRS feed

  • Debate general

  • Hola a todos, tengo el siguiente stored procedure (ORACLE)

    CREATE TABLE ORDEN_COMPRA_TMP ( "COD_OC" VARCHAR2(16 BYTE) primary key, "FCH_FECHA" DATE NOT NULL ENABLE, "FLG_TIPO" CHAR(1 BYTE) NOT NULL ENABLE ); CREATE TABLE ITEM_OC_TMP ( "COD_OC" not null references ORDEN_COMPRA_TMP, "NUM_LINEA" NUMBER(*,0) NOT NULL ENABLE, "ID_PRODUCTO" number not null enable, primary key (COD_OC, NUM_LINEA) ); create or replace package ORDEN_COMPRA_ITEM as cursor c_template_detail is select NUM_LINEA, ID_PRODUCTO from ITEM_OC_TMP; type T_DETAIL is table of C_TEMPLATE_DETAIL%ROWTYPE; procedure upsert(P_MASTER ORDEN_COMPRA_TMP%ROWTYPE, P_DETAIL T_DETAIL); end ORDEN_COMPRA_ITEM; / create or replace package body ORDEN_COMPRA_ITEM as procedure upsert(p_master ORDEN_COMPRA_TMP%ROWTYPE, p_detail t_detail) is begin merge into ORDEN_COMPRA_TMP o using (select null from dual) n on (o.cod_oc = p_master.cod_oc) when matched then update set FCH_FECHA = p_master.FCH_FECHA, FLG_TIPO = p_master.FLG_TIPO when not matched then insert values p_master; dbms_output.put_line('ORDEN_COMPRA_TMP merged ' || sql%rowcount || ' lines.'); forall i in 1..p_detail.count merge into ITEM_OC_TMP o using (select null from dual) n on (o.cod_oc = p_master.cod_oc and o.NUM_LINEA = p_detail(i).NUM_LINEA) when matched then update set ID_PRODUCTO = p_detail(i).ID_PRODUCTO when not matched then insert values (p_master.cod_oc, p_detail(i).NUM_LINEA, p_detail(i).ID_PRODUCTO); dbms_output.put_line('ITEM_OC_TMP merged ' || sql%rowcount || ' lines.'); end upsert; end ORDEN_COMPRA_ITEM; /

    -PROBANDO

    set serveroutput on declare L_MASTER ORDEN_COMPRA_TMP%ROWTYPE; L_DETAIL ORDEN_COMPRA_ITEM.T_DETAIL := ORDEN_COMPRA_ITEM.T_DETAIL(); begin l_master.cod_oc := 'A'; l_master.fch_fecha := sysdate; l_master.flg_tipo := 'B'; l_detail.extend(2); l_detail(1).NUM_LINEA := 1; l_detail(1).ID_PRODUCTO := 2; l_detail(2).NUM_LINEA := 2; L_DETAIL(2).ID_PRODUCTO := 9; ORDEN_COMPRA_ITEM.upsert(l_master, l_detail); end; /

    Quisiera llamarlo desdes VB.NET 2010 para ser especificos, enviarle los parametros que son listas, si alguien me pudiera ayudar por favor..

    Gracias!

    • Tipo cambiado Eder Costa miércoles, 26 de septiembre de 2012 15:09
    • Cambiado Enrique M. Montejo viernes, 28 de septiembre de 2012 7:03 acceso a datos (De:Lenguaje VB.NET)
    lunes, 24 de septiembre de 2012 19:44