sql >> Databáze >  >> RDS >> Oracle

Jak zavolám uloženou proceduru Oracle ze skriptu Excel VBA?

Aby to fungovalo, musíte udělat spoustu instalatérských prací. Zkuste tento návod.

Zahrnuje tento vzorek. Předpokládá, že jste udělali odkaz na ADO, stáhli jste poskytovatele OleDB pro Oracle a nastavili jste soubor TNSNames.ora. Pokud nechcete používat TNNames.ora, můžete zkusit alternativní připojovací řetězec

Dim Oracon As ADODB.Connection
Dim recset As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim param1 As New ADODB.Parameter
Dim param2 As New ADODB.Parameter
Dim objErr As ADODB.Error

Dim Message, Title, Default, DeptValue
Message = "Enter a department number (10, 20, or 30)"
Title = "Choose a Department"
Default = "30"

On Error GoTo err_test
DeptValue = InputBox(Message, Title, Default)
If DeptValue = "" Then Exit Sub
If DeptValue < 10 Or DeptValue > 30 Then DeptValue = 30

Set Oracon = CreateObject("ADODB.Connection")
Oracon.ConnectionString = "Provider=OraOLEDB.Oracle;" & _
                          "Data Source=exampledb;" & _
                          "User ID=scott;" & _
                          "Password=tiger;"  
Oracon.Open
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = Oracon
Set param1 = cmd.CreateParameter("param1", adSmallInt, adParamInput, ,
                                DeptValue)
cmd.Parameters.Append param1
Set param2 = cmd.CreateParameter("param2", adSmallInt, adParamOutput)
cmd.Parameters.Append param2

' Enable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = TRUE  

cmd.CommandText = "{CALL Employees.GetEmpRecords(?, ?)}"
Set recset = cmd.Execute

' Disable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = FALSE 

Do While Not recset.EOF
   MsgBox "Number: " & recset.Fields("empno").Value & "  Name: " &
   recset.Fields("ename").Value & "  Dept: " & recset.Fields("deptno").Value
   recset.MoveNext
Loop

Exit Sub

err_test:
    MsgBox Error$
    For Each objErr In Oracon.Errors
        MsgBox objErr.Description
    Next
    Oracon.Errors.Clear
    Resume Next

Pokud narazíte na problémy, můžete se vrátit a položit konkrétnější otázku.



  1. 2013 MVP Summit :Rychlý přehled a nahlédnutí vpřed

  2. Změňte formát data (v DB nebo na výstupu) na dd/mm/rrrr - PHP MySQL

  3. Spusťte SERVERPROPERTY() proti propojenému serveru v SQL Server

  4. Jak vytvořit seskupenou sestavu pomocí Průvodce sestavou v Accessu 2016