Bonjour à toutes et à tous.
Accrochez-vous, c'est un peu compliqué à expliquer...
Depuis mes pages je voudrais passer des arguments pouvant avoir la valeur "Null" à des fonctions (compilées dans une dll) appelant elles-même des Procédures stockées.
exemple :
Afin de pouvoir passer des valeurs "NULL" je set mes variables à "Nothing", et pour être sur qu'elles le soient réellement j'affecte la valeur dbnull.value aux paramètres si ceux -ci remplissent la condition isnothing...
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 variable_retour = appel_fonction(var_1, var_2) Function appel_fonction (byval v1 as long, byval v2 as string) as string [...] (je vous passe les déclarations...) ParamfcVariable = Cmd.Parameters.Add("@v1", SqlDbType.Int) ParamfcVariable.Direction = ParameterDirection.Input if isnothing(v1) Then ParamfcVariable.Value = dbnull.value else ParamfcVariable.Value = v1 end if ParamfcVariable = Cmd.Parameters.Add("@v2", SqlDbType.VarChar, 255) ParamfcVariable.Direction = ParameterDirection.Input if isnothing(v2) Then ParamfcVariable.Value = dbnull.value else ParamfcVariable.Value = v2 end if Dim dr As SqlDataReader = Cmd.ExecuteReader() [...]
Jusque là tout semble opérationnel si ce n'est que, autant le varchar prend bien la valeur "NULL" en s'exécutant dans la requête, le numerique, ici un INT, passe systématiquement à 0 et non pas à la valeur "NULL" et ce malgré l'affectation dbnull.value au paramètre...
Suis-je assez clair ?
Mon souci est que si je veux tester une valeur "NULL" en base pour l'argument numérique je ne remplis plus ma condition en lui passant 0...
une solution ?...
Merci par avance.
Partager