j'ai une fonction dans un module vba d'une application Access

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Function F_LCT_I(p_table As String, p_cmp_cln As String, _
                p_res_cln As String, p_entree As String) As Integer
'Fonction (getter) de lecture
'p_table : nom de table
'p_cmp_cln : nom de colonne de comparaison
'p_res_cln : nom de colonne du résultat
'p_entree : paramètre de comparaison
 
On Error GoTo errhandler
    'Déclaration de variables
Dim rs As Recordset
   'Test de nullité du paramètre en entrée
If IsNull(p_entree) = True Then
    F_LCT_I = ""
    Exit Function
End If
    'Ouverture du RecordSet
Set rs = CurrentDb.OpenRecordset("SELECT " & p_res_cln _
                                & " FROM " & p_table _
                                & " WHERE " & p_cmp_cln & "='" & p_entree & "'")
    'Récupération de la donnée et affectation
F_LCT_I = rs.Fields(0).Value
    'Fermeture du Recordset
rs.Close
Set rs = Nothing
Exit Function
 
errhandler:
   'Traitement des exceptions
   With Err
      MsgBox "Error " & .Number & vbCrLf & .Description, _
            vbOKOnly Or vbCritical, p_table
   End With
End Function
Après une migration sur MS SQL SERVER 2005, je souhaiterai implémenter la même fonction en T-SQL.
En consultant la documentation, j'apprends que du SQL dynamique peut être peut être passé à une procédure stockée intégrée sp_executesql. Mais que celle-ci:
1. ne peut pas être utilisée dans une fonction UDF.
2. on ne peut pas lui passer le nom d'une table en paramètre

You may wonder why I do not pass @tbl as a parameter as well. The answer is that you can't. Dynamic SQL is just like any other SQL. You can't specify a table name through a variable in T-SQL, that's the whole story. Thus, when you need to specify things like table names, column names etc dynamically, you must interpolate them into the string.
source: http://www.sommarskog.se/dynamic_sql.html
Est-il possible d'implémenter cette fonction en T-SQL?
Merci d'avance.