请问各位高手,在vb6中可不可以用ado调用oracle中带输出参数的存储过程呢,如果可以请给一个例子如果不可以,请大侠们帮忙告诉我怎么用,最好也有例子,因为我对其他的连接方式不是很了解,谢谢了,另外,在参数中有一个date类型的,在运行时老是出错(没有执行可选特性),不知道要做什么处理呢。

解决方案 »

  1.   

    下面是我用 sql server 做的实验,麻烦大家看看有什么地方写的不对(没有执行可选特性).
    Dim Cnn As New ADODB.ConnectionPrivate Sub Command1_Click()
        Dim Cmm As New ADODB.Command
        Dim Pra1 As New ADODB.Parameter
        Dim Pra2 As New ADODB.Parameter
        Dim Pra3 As New ADODB.Parameter
        Dim Rs As New ADODB.Recordset
        Dim s As String
        Set Cmm.ActiveConnection = Cnn
        Cmm.CommandType = adCmdStoredProc
        Cmm.CommandText = "cp_Ins_Back"
        
        Set Pra1 = Cmm.CreateParameter("ddd", adVarChar, adParamInput, 16, "ddd")
        Cmm.Parameters.Append Pra1
        Set Pra2 = Cmm.CreateParameter("testd", adDBDate, adParamInput, 8, CDate(Date))
        Cmm.Parameters.Append Pra2
        Set Pra3 = Cmm.CreateParameter("dddO", adVarChar, adParamOutput, 16, "ddd")
        Cmm.Parameters.Append Pra3
        
        Cmm.Execute
        
        s = Cmm.Parameters("dddO")
        
        
    End SubPrivate Sub Form_Load()
        Cnn.CursorLocation = adUseClient
        Cnn.Open "dsn=sss;uid=sa;pwd=sa"
    End Sub
      

  2.   

    参考以下
    sql server 的
    http://blog.csdn.net/online/archive/2004/08/05/66376.aspx
      

  3.   

    http://it.icxo.com/htmlnews/2004/08/13/298318.htm
      

  4.   

    Cmm.CreateParameter("testd", adDBDate, adParamInput, 8, CDate(Date))
                                                         A
                                                         |____________才给8位大小阿,你看一下CDate(Date)打出来是多少?
      

  5.   

    Cmm.CreateParameter("testd", adVarChar, adParamInput, 8, "to_date('" & format(Date,"yyyy-mm-dd") & "','YYYY-MM-DD')")
      

  6.   

    其实我都是这样写的,因为你在存储过程里已经写好了参数了啊:
    Private Sub Command1_Click()
        Dim Cmm As New ADODB.Command
        Dim Pra1 As New ADODB.Parameter
        Dim Pra2 As New ADODB.Parameter
        Dim Pra3 As New ADODB.Parameter
        Dim Rs As New ADODB.Recordset
        Dim s As String
        Set Cmm.ActiveConnection = Cnn
        Cmm.CommandType = adCmdStoredProc
        Cmm.CommandText = "cp_Ins_Back"
     
        Cmm.Parameters("存储参数,例如@a").value=变量
        ......    Cmm.Execute
            
        
    End Sub
      

  7.   

    这是我的能用
    Private Sub Command1_Click()
    Dim conn As ADODB.Connection
    Set conn = New Connection
    constr = "Provider=msdaora.1;Data Source=cg;User ID=user;Password=psw;"
    conn.Open constr
    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = conn
    cmd.CommandText = "write_km1"
    cmd.CommandType = adCmdStoredProcDim rq As String
    rq = Date & " " & TimeDim p1 As New ADODB.Parameter
    Set p1 = cmd.CreateParameter("lsh", adChar, adParamInput, 11, "04102709199")
    cmd.Parameters.Append p1Dim p2 As New ADODB.Parameter
    Set p2 = cmd.CreateParameter("sfzmhm", adChar, adParamInput, 18, "532233197602033615")
    cmd.Parameters.Append p2Dim p3 As New ADODB.Parameter
    Set p3 = cmd.CreateParameter("kscx", adChar, adParamInput, 2, "ZZ")
    cmd.Parameters.Append p3Dim p4 As New ADODB.Parameter
    Set p4 = cmd.CreateParameter("ksrq", adDate, adParamInput, 8, CDate(rq))
    cmd.Parameters.Append p4Dim p5 As New ADODB.Parameter
    Set p5 = cmd.CreateParameter("kscj", adChar, adParamInput, 3, 99)
    cmd.Parameters.Append p5Dim p6 As New ADODB.Parameter
    Set p6 = cmd.CreateParameter("kscs", adInteger, adParamInput, 2, 1)
    cmd.Parameters.Append p6Dim p7 As New ADODB.Parameter
    Set p7 = cmd.CreateParameter("ksy1", adChar, adParamInput, 30, "笑嘻嘻")
    cmd.Parameters.Append p7Dim p8 As New ADODB.Parameter
    Set p8 = cmd.CreateParameter("ksy2", adChar, adParamInput, 30, "")
    cmd.Parameters.Append p8Dim p9 As New ADODB.Parameter
    Set p9 = cmd.CreateParameter("jbr", adChar, adParamInput, 30, "发动机")
    cmd.Parameters.Append p9Dim p10 As New ADODB.Parameter
    Set p10 = cmd.CreateParameter("zt", adChar, adParamInput, 1, "A")
    cmd.Parameters.Append p10Dim p11 As New ADODB.Parameter
    Set p11 = cmd.CreateParameter("res", adInteger, adParamOutput, 1, 0)
    cmd.Parameters.Append p11Dim p12 As New ADODB.Parameter
    Set p12 = cmd.CreateParameter("err", adVarChar, adParamOutput, 300, "")
    cmd.Parameters.Append p12
    cmd.ExecuteMsgBox cmd.Parameters("res").Value
    conn.Close
    Set conn = Nothing
    End Sub
      

  8.   

    我们开发都不用ADO来连接Oracle数据库和进行操作的,用Oracle自己的对象