• Viernes 8 de Noviembre de 2024, 19:45

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Teddys Lopez G

Páginas: [1]
1
Bases de Datos / Consumir Datos Tipo Array Con Vb6 Desde Oracle 10g
« en: Martes 19 de Febrero de 2008, 20:11 »
Estamos tratando de consumir datos generados desde un Procedimiento almacenado en Oracle 10g. La conexión la hacemos usando OraOLEDB.Oracle.1 y con eso no tenemos ningun inconveniente, ni con los procedimientos que retornan datos tipo cursor. El problema se nos presenta cuando tratamos de ejecutar un procedimiento que retorna datos tipo Array.

El encabezado del procedimiento que invocamos es le siguiente:

P_Nombre(V_ACT_PADRE ACT.CODIGO%TYPE,
                V_CFG_OFERTA NODOS_ACT.CFG_OFE_CONSECUTIVO%TYPE,
                V_CONS_DET_EVE2 DET_EVENTOS.CONSECUTIVO%TYPE,
                V_NVL OUT NOCOPY T_RES_NVL,
                V_CNS OUT NOCOPY T_RES_CNS,
                V_CNP OUT NOCOPY T_RES_CNP,
                V_ACT OUT NOCOPY T_RES_ACT,
                V_CON OUT NOCOPY T_RES_CON,
                V_ERROR OUT NUMBER)

Los tipos de datos referenciados son los siguientes:
TYPE T_RES_NVL IS TABLE OF INTEGER
  INDEX BY BINARY_INTEGER;
TYPE T_RES_CNS IS TABLE OF INTEGER
  INDEX BY BINARY_INTEGER;
TYPE T_RES_CNP IS TABLE OF INTEGER
  INDEX BY BINARY_INTEGER;
TYPE T_RES_ACT IS TABLE OF ACT.NOMBRE%TYPE
  INDEX BY BINARY_INTEGER;
TYPE T_RES_CON IS TABLE OF NODOS_ACT.CONSECUTIVO%TYPE
  INDEX BY BINARY_INTEGER;

El código que usamos desde Vb6.0 para invocar este procidimiento, es el siguiente:

CPw1.ActiveConnection = GConexion
CPw1.CommandType = adCmdStoredProc
 
  With CPw1
    QSQL = "P_Nombre"
    .Parameters.Append .CreateParameter("V_ACT_PADRE", adNumeric, adParamInput, , param1)
    .Parameters.Append .CreateParameter("V_CFG_OFERTA", adNumeric, adParamInput, , param2)
    .Parameters.Append .CreateParameter("V_CONS_DET_EVE2", adNumeric, adParamInput, , param3)
    .Parameters.Append .CreateParameter("V_NVL", adArray Or adNumeric, adParamOutput)
    .Parameters.Append .CreateParameter("V_CNS", adArray Or adNumeric, adParamOutput)
    .Parameters.Append .CreateParameter("V_CNP", adArray Or adNumeric, adParamOutput)
    .Parameters.Append .CreateParameter("V_ACT", adArray Or adVarChar, adParamOutput)
    .Parameters.Append .CreateParameter("V_CON", adArray Or adNumeric, adParamOutput)
    .Parameters.Append .CreateParameter("V_ERROR", adNumeric, adParamOutput):  Retorno = 2
  End With
 
  CPw1.Properties("PLSQLRSet") = True
 
  CPw1.CommandText = QSQL
 
  CPw1.Execute
  'CPw1.Properties("PLSQLRSet") = False

Al ejecutar este código nos genera el siguiente mensaje de error:
-2147467259. ?|?
y no dice más.

Les agradezco toda la colaboración que en este sentido nos puedan prestar.

Páginas: [1]