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 :
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() 
[...]
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...
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.