SQLSetParamNull()
- Last UpdatedSep 24, 2024
- 2 minute read
La fonction SQLSetParamNull() définit le paramètre spécifié d'une instruction SQL à NULL.
Catégorie
SQL
Syntaxe
SQLSetParamNull(StatementID, ParameterNumber, ParameterType, Precision, Scale)
Arguments
StatementID
Valeur entière identifiant une instruction SQL dans une requête.
ParameterNumber
Valeur entière désignant le paramètre dans l'instruction SQL identifiée par l'argument StatementID.
ParameterType
Valeur entière spécifiant le type de données du paramètre spécifié par l'argument ParameterNumber. L'argument ParameterType peut être renseigné avec les valeurs suivantes<:hs>:
0: Chaîne
1: Date/Heure
2: Entier
3: Nombre en virgule flottante
4: Nombre décimal
laPrécision
Précision des données correspondant au type du paramètre.
Échelle
Précision de la valeur décimale. Cette valeur n'est nécessaire que pour la définition d'un paramètre nul, lorsque c'est applicable.
Remarques
Dans SQL<:hs>Server, la comparaison avec une valeur NULL est contrôlée par l'option ANSI_NULLS. Dans SQL<:hs>Server 7.0, l'option est appliquée lors de la création de l'objet, non au moment où la requête est exécutée. Lorsqu'une procédure stockée est créée dans SQL<:hs>Server 7.0, cette option prend la valeur ON par défaut, de sorte qu'une clause comme «<:hs>WHERE MyField = NULL<:hs>» renvoie toujours NULL (FAUX). Une instruction SELECT utilisant cette clause ne renverra donc aucune ligne.
Pour faire en sorte qu'une comparaison = ou <> renvoie une valeur VRAI ou FAUX, il faut définir l'option à OFF au moment de la création de la procédure stockée. La fonction SQLSetParamNull() ne s'exécutera pas comme attendu si l'option ANSI_NULLS ne prend pas la valeur OFF. Si c'est le cas, une comparaison sur la valeur NULL devrait faire appel à la syntaxe «<:hs>WHERE MyField IS NULL<:hs>» ou encore «<:hs>WHERE MyField IS NOT NULL<:hs>».
Exemple
Cette transaction renvoie toutes les lignes de la table Products où ProductName n'est pas NULL.
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE sp_TestNotNull @ProductParam varchar(255)
AS SELECT * FROM Products WHERE ProductName <> @ProductParam
GO
SET ANSI_NULLS ON
GO
InTouch peut exécuter les scripts SQL suivants.
ResultCode = SQLSetStatement(ConnectionId, "sp_TestNotNull");
ResultCode = SQLPrepareStatement(ConnectionId, StatementID);
ResultCode = SQLSetParamNull(StatementID, 1, 0, 0, 0);
ResultCode = SQLExecute(ConnectionId, BindList, StatementID);
ResultCode = SQLFirst(ConnectionId);
ResultCode = SQLClearStatement(ConnectionId, StatementID);
Voir aussi
SQLPrepareStatement()