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 :

  1. Variable locale
  2. 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.

Variables SQL
Type de variables dans SQL Server

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:

  1. Lors de la déclaration de variable à l'aide du mot-clé DECLARE.
  2. Utilisation de SET
  3. 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

Attribuer une valeur à une variable SQL

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

VARIABLE ENSEMBLE SQL

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

VARIABLE ENSEMBLE SQL

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 :

VARIABLE ENSEMBLE SQL

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

VARIABLE ENSEMBLE SQL

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.

VARIABLE ENSEMBLE SQL

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

VARIABLE DE SÉLECTION SQL

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

VARIABLE DE SÉLECTION SQL

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

VARIABLE DE SÉLECTION SQL

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.

VARIABLE DE SÉLECTION SQL

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

VARIABLE DE SÉLECTION SQL

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.

VARIABLE DE SÉLECTION SQL

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.

VARIABLE DE SÉLECTION SQL

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

Autre variable SQL

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