Variables SQL : SQL Server déclare, définit et sélectionne une variable
Qu’est-ce qu’une variable dans SQL Server ?
Dans MS SQL, les variables sont l'objet qui agit comme un espace réservé à un emplacement mémoire. La variable contient une valeur de données unique.
Types de variables dans SQL : Local, Global
MS SQL possède deux types de variables :
- Variable locale
- Variable globale.
Cependant, l'utilisateur ne peut créer qu'une variable locale.
La figure ci-dessous explique deux types de variables disponibles dans Serveur MS SQL.
Variable locale
- Un utilisateur déclare la variable locale.
- Par défaut, une variable locale commence par @.
- Chaque portée de variable locale a la restriction à la lot ou procédure en cours au sein d’une session donnée.
Variable globale
- Le système gère la variable globale. Un utilisateur ne peut pas les déclarer.
- La variable globale commence par @@
- Il stocke informations relatives à la séance.
Comment DÉCLARER une variable en SQL
- Avant d'utiliser une variable dans un batch ou une procédure, vous devez déclarer la variable.
- La commande DECLARE est utilisée pour DECLARE la variable qui agit comme un espace réservé pour l'emplacement mémoire.
- Ce n'est qu'une fois la déclaration effectuée qu'une variable peut être utilisée dans la partie suivante du lot ou de la procédure.
Syntaxe TSQL :
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Règles :
- L'initialisation est une chose facultative lors de la déclaration.
- Par défaut, DECLARE initialise la variable à NULL.
- L'utilisation du mot-clé « AS » est facultative.
- Pour déclarer plusieurs variables locales, utilisez une virgule après la première définition de variable locale, puis définissez le nom de variable locale suivante et Type de données.
Exemples de déclaration d'une variable
Requête : Avec 'AS'
DECLARE @COURSE_ID AS INT;
Requête : sans 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Requête : DÉCLARER deux variables
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Attribuer une valeur à une variable SQL
Vous pouvez attribuer une valeur à une variable dans les cas suivants trois façons:
- Lors de la déclaration de variable à l'aide du mot-clé DECLARE.
- Utilisation de SET
- Utilisation de SELECT
Examinons ces trois méthodes en détail :
Lors de la déclaration de variable à l'aide du mot-clé DECLARE
Syntaxe T-SQL :
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Ici, après le type de données, nous pouvons utiliser '=' suivi de la valeur à attribuer
requête:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Utilisation de SQL SET VARIABLE
Parfois, nous souhaitons séparer la déclaration et l’initialisation. SET peut être utilisé pour attribuer des valeurs à la variable, après avoir déclaré une variable. Vous trouverez ci-dessous les différentes manières d'attribuer des valeurs à l'aide de SET :
Exemple: Affectation d'une valeur à une variable à l'aide de SET
syntaxe:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
requête:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Exemple : Attribuer une valeur à variables multiples en utilisant SET.
syntaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Règle: Un mot-clé SET peut être utilisé pour attribuer une valeur uniquement à une variable.
requête:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Exemple: Affectation d'une valeur à une variable avec un Sous-requête scalaire en utilisant SET
syntaxe:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Règles :
- Mettez la requête entre parenthèses.
- La requête doit être une requête scalaire. Une requête scalaire est une requête dont les résultats sont constitués d'une seule ligne et d'une seule colonne. Sinon, la requête générera une erreur.
- Si la requête ne renvoie aucune ligne, alors la variable est définie sur VIDE, c'est-à-dire NULL.
Supposition: Supposons que nous ayons le tableau « Guru99 » avec deux colonnes comme indiqué ci-dessous :
Nous utiliserons la table 'Guru99' dans les prochains tutoriels
1 Exemple: Lorsque la sous-requête renvoie une ligne en conséquence.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Exemple 2 : lorsque la sous-requête renvoie zéro ligne en conséquence
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Dans ce cas particulier, la valeur de la variable est VIDE, c'est-à-dire NULL.
Utilisation de la variable SQL SELECT
Tout comme SET, nous pouvons également utiliser SELECT pour attribuer des valeurs aux variables, en déclarant une variable à l'aide de DECLARE. Vous trouverez ci-dessous différentes manières d'attribuer une valeur à l'aide de SELECT :
Exemple: Affectation d'une valeur à une variable à l'aide de SELECT
syntaxe:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
requête:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Exemple : Attribution d'une valeur à plusieurs variables à l'aide de SELECT
syntaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Règles : Contrairement à SET, SELECT peut être utilisé pour attribuer une valeur à plusieurs variables séparés par le virgule.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Exemple: Affectation de la valeur à une variable avec une sous-requête à l'aide de SELECT
syntaxe:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Règles :
- Mettez la requête entre parenthèses.
- La requête doit être une requête scalaire. La requête scalaire est la requête dont le résultat est une ligne et une colonne. Sinon, la requête générera une erreur.
- Si la requête ne renvoie aucune ligne, alors la variable est VIDE, c'est-à-dire NULL.
- Reconsidérer notre table 'Guru99'
1 Exemple: Lorsque la sous-requête renvoie une ligne en conséquence.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
2 Exemple: Lorsque la sous-requête renvoie zéro ligne en conséquence
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Dans ce cas particulier, la variable est VIDE, c'est à dire NULL.
3 Exemple: Attribuez une valeur à une variable avec une instruction SELECT régulière.
syntaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Règles :
- Contrairement à SET, si la requête génère plusieurs lignes, la valeur de la variable est définie sur la valeur de la dernière ligne.
- Si la requête ne renvoie aucune ligne, alors la variable est définie sur VIDE, c'est-à-dire NULL.
Requête 1 : la requête renvoie une ligne.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Requête 2 : la requête renvoie plusieurs lignes.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Dans ce cas particulier, la valeur de la variable est défini sur la valeur de la dernière ligne.
Requête 3 : la requête ne renvoie aucune ligne.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Dans ce cas particulier, la variable est VIDE, c'est à dire NULL.
Autres exemples de variables SQL
Utiliser une variable dans la requête
requête:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Faits intéressants sur les variables SQL Server !
- Une variable locale peut être affichée en utilisant PRINT ainsi que SELECT COMMAND
- Le type de données Table ne permet pas l'utilisation de 'AS' lors de la déclaration.
- SET est conforme aux normes ANSI, contrairement à SELECT.
- La création d'une variable locale avec le nom @ est également autorisée. Nous pouvons le déclarer comme, par exemple :
'DECLARE @@ as VARCHAR (10)'
Résumé
- Les variables sont l'objet qui agit comme un espace réservé.
- Deux types de variables existent : Locale et Globale
- Nous pouvons affecter la variable des trois manières suivantes : En utilisant 1) DECLARE 2) En utilisant SET 3) USING SELECT