vb调用oracle的函数或者过程一般使用ado COMMAND对象。设置CommandType = adCmdText,如果调用过程,则使用{call PackageName.ProcedureName(?,{resultset 0,RefCursor})},如果调用函数,则使用{? = call PackageName.FunctionName(?,{resultset 0,RefCursor})}。
具体代码如下:    '更新窗体标题
    Me.Caption = "正在查询,请稍候..."
    
    '检索数据
    '定义一个COMMAND对象
    Dim cmd As New ADODB.Command
    
    '命令类型为文本
    cmd.CommandType = adCmdText
    
    '命令文本采用 {? = call PackageName.FunctionName(?,{resultset 0,RefCursor})}
    '的形式,其中:
    ' 第一个 ? 是返回值
    ' 其他的 ? 是传入参数
    ' RefCursor 是REF CURSOR类型的传出参数
    cmd.CommandText = "{? = call PKG_OP_JG.DELETEDEPARTMENT(?)}"
    
    '添加参数
    cmd.Parameters.Append cmd.CreateParameter("return_val", adInteger, adParamReturnValue)
    cmd.Parameters.Append cmd.CreateParameter("IN_JGDM", adBSTR, adParamInput)
    
    '给参数赋值:
    cmd(1) = "1000010"
    
    '设置连接
    Set cmd.ActiveConnection = Cnn
    
    '获取数据
    cmd.Execute
    
    '显示数据
    MsgBox cmd(0)    '更新窗体标题
    Me.Caption = "查询结束"