vba+调用oracle+存储过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Public Function callPr_restore(ByVal conn As Connection, pr_restore_name As String)
Dim CNN_cmd As mand
Set CNN_cmd = New mand
Set CNN_cmd.ActiveConnection = conn
CNN_mandText = pr_restore_name
CNN_mandType = adCmdStoredProc
'------------------------有参存储过程加以下代码----------------------------------
With CNN_cmd
' 两种方式给参数赋值
' 第一种:CNN_cmd.P阿rameters(参数索引).value = 参数值
' 第二种:.CNN_cmd.Parameters.Append .CreateParameter(参数名,adVarChar, adParamInput, 10,
参数值)
.Parameters(1).Value = "20030611"
.Parameters.Append .CreateParameter("stunum", adVarChar, adParamInput, 10, "20030610")
.Parameters.Append .CreateParameter("sPrefix", adVarChar, adParamInput, 4, "2004")
.Parameters.Append .CreateParameter("iLength", adInteger, adParamInput, , 5)
.Parameters.Append .CreateParameter("sSequenceNumber", adVarChar, adParamOutput, 7,
sSequenceNumber)
End With
'---------------------------------------END--------------------------------------------
CNN_cmd.Execute
End Function
其中,参数conn:数据库连接、pr_restore_name:存储过程
工具-->引用-->Microsoft ActiveX Data Objects 2.8勾上,确定(此处2.8为最高的一项)
示例代码如下:
Sub test()
Dim i As Integer
Dim connStr As String
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
i = 0
connStr = "Provider=MSDAORA.1;Data Source=dbname"
Set conn = New ADODB.Connection
conn.Open connStr, "username", "password"
Set rs = New ADODB.Recordset
rs.Open "select * from tablename", conn
If Not rs.EOF Then
MsgBox rs.Fields.Count '输出列数
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End Sub