1.连接驱动为Provider=OraOLEDB.Oracle;用ado连接,怎么在vb中定义parameter中的传入数组类型,然后在存储过程中如何接收此数组?
同样输出数组在vb中如何接收?2.在ado的parameter中对应的数据类型和oracle中的数据类型如何对应?
如addouble对应number,则advarchar对应oracle什么类型?
希望能有一个完整对应列表.期盼高手解答!
200分相送,up都有分!

解决方案 »

  1.   

    可以换种想法,创建个临时表,将数组数据Insert TO temptable,procedure read it
      

  2.   

    这是我初学VB写的,不知道对你有没有帮助
    Public Function exec_proc() As Integer
    Dim id As Integer
    Dim cmd As ADODB.Command
        Dim par1 As ADODB.Parameter
        Set cmd = New ADODB.Command
        With cmd
        .CommandText = "dkh_charge_order_pro" 'oracle存储过程名
        .CommandType = adCmdStoredProc
        Set par1 = .CreateParameter("id", adInteger, adParamOutput)'par1是个输出参数。
    在存程过程中是个OUTPUT
       .Parameters.Append par1
         Set .ActiveConnection = oracle_con
       .Execute
        End With
        If IsNull(cmd.Parameters("id").Value) Then
       exec_proc = 0
       Else
       exec_proc = cmd.Parameters("id").Value
       End If
              Set cmd = Nothing
    End Function
      

  3.   

    测式源码如下:
        Dim cmd As ADODB.Command
        Dim rs As ADODB.Recordset
        
        Dim pkgname As String
        
        pkgname = "spTestPkg.test{?,?}"    Dim clsDa As New clsDataAccess
        
        Set cmd = New ADODB.Command
        
        With cmd
            
            .Parameters.Append .CreateParameter(, adUserDefined, adParamOutput)
            .Parameters.Append .CreateParameter(, adArray, adParamOutput)
              
        End With
       ...
     
    pl/sql:          --type d1 is table of number INDEX BY BINARY_INTEGER;
             -- type d2 is table of  varchar2(100) INDEX BY BINARY_INTEGER;
              
              type cur is ref cursor;
              procedure test(t1 out d1,t2 out d2)
            ......
      

  4.   

    帮你顶一下,Oralce是什么我还不知道呢