Personal tools
You are here: Home Les outils logiciels SGBD MS Access Comment appeler une Procédure Stockée (Oracle, SQLServer...) depuis Access ?

Comment appeler une Procédure Stockée (Oracle, SQLServer...) depuis Access ?

Comment appeler une Procédure Stockée Oracle depuis Access ?
auteur : Team Access

EN passant par ODBC (UserDSN)
Private Sub Callproc_Click() 
 ' This code demonstrates calling an Oracle Packaged Procedure and Function 
 ' using the ODBC {Call...} Syntax From Visual Basic using the Microsoft 
 ' Activex Data Objects (ADO) 2.1 (or above) interface via the Oracle ODBC Driver. 
 ' The PL/SQL package called is 
 ' 
 ' create or replace package odbpack as 
 ' 
 ' Procedure Proc(param1 in number,param2 in out number, 
 '   param3 out number); 
 ' 
 ' Function Func(param1 in varchar2, param2 in out varchar2, 
 '   param3 out varchar2) return number; 
 ' end odbpack; 
 ' / 
 ' 
 ' create or replace package body odbpack as 
 ' Procedure Proc(param1 in number,param2 in out number, 
 '   param3 out number) is 
 ' begin 
 '   param2 := param1+param2; 
 '   param3 := param1; 
 ' end; 
 ' 
 ' Function func(param1 in varchar2, param2 in out varchar2, 
 '   param3 out varchar2) return number is 
 ' begin 
 '   param2 := param1||param2; 
 '   param3 := param1; 
 '   return length(param2); 
 ' end; 
 ' end odbpack; 
 ' / 
 ' 
 ' 
 
 'Dim er As adoError 
 'On Error GoTo CnEh 

   Dim cnn1 As ADODB.Connection 
   Dim cmdExeproc As ADODB.Command 
 ' Open connection. 
   Set cnn1 = New ADODB.Connection 
 ' Modify the following line to reflect a DSN within your environment 
   strCnn = "DSN=W805; UID=LeLogin; PWD=LeMotDePasse;" 
   cnn1.Open strCnn 

   Set cmdExeproc = New ADODB.Command 

   cmdExeproc.ActiveConnection = cnn1 
   cmdExeproc.CommandText = "{call odbpack.proc(?,?,?)}" 

 '  In the next set of code, we have to manually set 
 '  the parameter types since ADO and ODBC cannot derive this 
 '  information when calling packaged procedures. 
     
   cmdExeproc.Parameters(0).Value = 1 
   cmdExeproc.Parameters(1).Direction = adParamInputOutput 
   cmdExeproc.Parameters(1).Value = 2 
   cmdExeproc.Parameters(2).Direction = adParamOutput 
    
   cmdExeproc.Execute 
   MsgBox ("Return Values from Proc are : " & _
            cmdExeproc.Parameters(1).Value & _
            " and " & _
            cmdExeproc.Parameters(2).Value) 
            
   Set cmdExeproc = New ADODB.Command 

   cmdExeproc.ActiveConnection = cnn1 
   cmdExeproc.CommandText = "{? = call odbpack.func(?,?,?)}" 
    
 '  In the next set of code, we have to manually set 
 '  the parameter types since ADO and ODBC cannot derive this 
 '  information when calling packaged procedures. 
 
   cmdExeproc.Parameters(0).Direction = adParamReturnValue 
   cmdExeproc.Parameters(1).Value = "Odd" 
   cmdExeproc.Parameters(2).Direction = adParamInputOutput 
   cmdExeproc.Parameters(2).Value = "Fred" 
   cmdExeproc.Parameters(3).Direction = adParamOutput 
   cmdExeproc.Execute 
   MsgBox ("Return Values from Func are : " & _
            cmdExeproc.Parameters(0).Value & _
            " and " & _
            cmdExeproc.Parameters(2).Value & _
            " and " & _
            cmdExeproc.Parameters(3).Value) 
            
 '  Close Connection 
   cnn1.Close 
End Sub
Document Actions
« May 2024 »
May
MoTuWeThFrSaSu
12345
6789101112
13141516171819
20212223242526
2728293031