我写了一个过程在Oracle,客户端用ADO来连接运行,
存储过程的接口是:
======================================================
Procedure SP_findObjID(resultset out Rome.RefCursor,Obj_ID in char,Obj_TabName in varchar2
,pObj_ID out char
,pObj_TabName out varchar2)
========================================================
客户端VB的程序是:
=======================================================
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim Param1 As New ADODB.Parameter
Dim Param2 As New ADODB.Parameter
Dim Param3 As New ADODB.Parameter
Dim Param4 As New ADODB.Parameter
Dim Param5 As New ADODB.Parameter
Set con = CreateObject("ADODB.Connection"

con.CursorLocation = adUseClient
con.Open "DSN=Rome_Oracle;UID=rome;PASSWORD=manager"
Set cmd = CreateObject("ADODB.Command"

Set cmd.ActiveConnection = con
Set Param1 = cmd.CreateParameter("result", adPropVariant, adParamOutput)
cmd.Parameters.Append Param1
Set Param2 = cmd.CreateParameter(, adChar, adParamInput, 32, "FSTDC01121316182678D"

cmd.Parameters.Append Param2
Set Param3 = cmd.CreateParameter(, adVarChar, adParamInput, 50, "TCAPPGROUP"

cmd.Parameters.Append Param3
Set Param4 = cmd.CreateParameter(, adChar, adParamOutput, 32)
cmd.Parameters.Append Param4
Set Param5 = cmd.CreateParameter(, adVarChar, adParamOutput, 50)
cmd.Parameters.Append Param5
cmd.CommandText = "Ora_Rome.SP_findObjID"
Set rs = cmd.Execute()
Do While Not rs.EOF
MsgBox rs.Fields(0).Value
rs.MoveNext
Loop
If con.Errors.Count > 0 Then
MsgBox con.Errors(0).Description
End If
rs.Close
Set rs = Nothing
Set cmd = Nothing
con.Close
Set con = Nothing
=======================================================
我在PL/SQL里测试这个过程,运行成功,但VB的代码来连接测试出现这个错误:
==================================================
err.Number :-2147217872
err.Description :类型名称无效。
=================================================
请问是什么原因?