vba+调用oracle+存储过程

Public Function callPr_restore(ByVal conn As Connection, pr_restore_name As String)
Dim CNN_cmd As https://www.360docs.net/doc/346138127.html,mand
Set CNN_cmd = New https://www.360docs.net/doc/346138127.html,mand
Set CNN_cmd.ActiveConnection = conn

CNN_https://www.360docs.net/doc/346138127.html,mandText = pr_restore_name
CNN_https://www.360docs.net/doc/346138127.html,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


相关文档
最新文档