Bonjour,
Une fonction SQL Server de type scalaire (renvoie une valeur) s'utilise généralement dans une instruction SQL.
SELECT MaFonction(arguments) As AliasColonne
Le résultat est un jeu de données, même s'il n'y a qu'une ligne et qu'une colonne.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Dim rs As ADODB.Recordset
'on ouvre la connection
connexOpen
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT dbo.CumulCout(" & Str(numproj) ")"
'on execute la commande
Set rs = cmd.Execute()
Debug.Print rs(0).Value
' fermeture recordset
rs.close
set rs = Nothing
'on ferme la connection
connexClose |
Sinon on peut, à priori, utiliser une fonction comme une procédure stockée, avec un objet Command.
J'ai testé, mais avec une version supérieure à SQL Server 2000.
Ce code n'est valable que pour une fonction.
Pas pour une procédure stockée où les paramètres de sortie sont, je crois, déclarés en dernier, et avec adParamOutput.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 'on ouvre la connection
connexOpen
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "CumulCout"
' création et ajout paramètre pour valeur retournée
' Rem1 : @RETVAL est un nom que j'ai choisi arbitrairement
' Rem2 : remplacer <type> par le bon type
cmd.Parameters.Append cmd.CreateParameter("@RETVAL", <type> , adParamReturnValue, , 0)
' création et ajout paramètre en entrée n°1/1
cmd.Parameters.Append cmd.CreateParameter("@numproj", adNumeric, adParamInput, 3, numproj)
'on execute la commande
cmd.Execute
' Valeur retournée par la fonction
Debug.Print cmd.Parameters(0)
'on ferme la connection
connexClose |
A+
Partager