Articles

SQLShack (Français)

Posted by admin

SQL Server nous fournit deux méthodes dans T-SQL pour attribuer une valeur à une variable SQL locale précédemment créée. La première méthode est L’instruction SET, l’instruction Standard ANSI couramment utilisée pour l’affectation de valeurs variables. La deuxième instruction est L’instruction SELECT., En plus de son utilisation principale pour former la logique utilisée pour récupérer des données à partir d’une table de base de données ou de plusieurs tables dans SQL Server, L’instruction SELECT peut également être utilisée pour attribuer une valeur à une variable locale précédemment créée directement ou à partir d’une variable, d’une vue ou d’une table.

bien que les deux instructions T-SQL remplissent la tâche D’affectation de valeur de variable SQL, il existe un certain nombre de différences entre les instructions SET et SELECT qui peuvent vous amener à choisir l’une d’entre elles dans des circonstances spécifiques, plutôt que l’autre., Dans cet article, nous allons décrire, en détail, quand et Pourquoi choisir entre les instructions SET et SELECT T-SQL tout en attribuant une valeur à une variable.

nous allons commencer par créer une nouvelle table et la remplir avec quelques enregistrements pour notre démo.,d à l’aide de l’instruction SELECT suivante:

1
SÉLECTIONNEZ * à PARTIR de SetVsSelectDemo

Et les données seront comme ci-dessous:

Si nous parvenons à attribuer une valeur scalaire pour la variable SQL qui est déjà défini à l’aide de l’instruction DECLARE, à la fois l’ENSEMBLE et les instructions SELECT permettra d’atteindre la cible de la même manière.,c47f9″>

1
2
3
4

DECLARE @EmpName2 de type NVARCHAR(50)
SELECT @EmpName2 = ‘Ali’
PRINT @EmpName2
ALLER

Les valeurs attribuées aux variables dans les requêtes précédentes seront imprimées dans l’onglet Messages comme indiqué ci-dessous:

SQL Server nous permet de donner une valeur pour une variable SQL à partir d’une base de données de la table ou de la vue.,

3
4
DECLARE @EmpName NVARCHAR(50)
SELECT @EmpName = from SetVsSelectDemo WHERE GroupNumber = 3
PRINT @EmpName
GO

Les résultats des deux requêtes précédentes seront affichés dans L’onglet messages comme indiqué ci-dessous:

jusqu’à ce point, vous pouvez voir que les instructions SET et select peuvent effectuer la tâche D’affectation de valeur variable de la même manière et diffèrent du côté du code uniquement.,

plusieurs Variables SQL

supposons que nous devons attribuer des valeurs à plusieurs variables en un seul coup. L’instruction SET peut attribuer une valeur à une variable à la fois; cela signifie que, si nous devons attribuer des valeurs à deux variables, nous devons écrire deux instructions SET. Dans l’exemple ci-dessous, chaque variable nécessite une instruction SET distincte pour lui attribuer une valeur scalaire, avant de l’imprimer:

d’autre part, L’instruction SELECT peut être utilisée pour attribuer des valeurs aux multiples variables SQL précédemment définies à l’aide d’une instruction SELECT., L’instruction SELECT ci-dessous peut être facilement utilisée pour assigner des valeurs scalaires aux deux variables en utilisant une instruction SELECT avant de l’imprimer:

Vous pouvez voir dans le résultat imprimé ci-dessous, que les deux instructions réalisent la même tâche, avec L’instruction SELECT mieux que L’instruction SET lorsque vous essayez d’assigner des valeurs à plusieurs variables en raison de la simplicité du code:

encore une fois, si nous essayons d’assigner des valeurs de la table de base de données à plusieurs variables, il nous faut définissez des instructions égales au nombre de variables.,o Les variables @EmpName et @EmpGrade comme indiqué dans le script ci-dessous:

d’autre part, une seule instruction SELECT peut être utilisée pour affecter des valeurs de la table SetVsSelectDemo aux variables SQL @EmpName et @EmpGrade, en utilisant une requête plus simple comme indiqué clairement ci-dessous:

Il est évident d’après les deux requêtes précédentes que la requête qui utilise L’instruction SELECT est plus efficace que celle qui utilise set instruction lors de L’affectation de valeurs à plusieurs variables en même temps, en raison du fait que, l’instruction SET ne peut affecter qu’une seule variable à la fois., Les résultats similaires des deux requêtes précédentes qui sont imprimées dans l’onglet Messages seront comme ci-dessous dans notre cas:

valeurs multiples

le deuxième point, dans lequel la différence entre les valeurs des variables SQL à l’aide des instructions SELECT ou set apparaissent lorsque l’ensemble de résultats de la requête de sous-requête utilisée pour attribuer une valeur à la variable renvoie plusieurs valeurs., Dans ce cas, L’instruction SET renverra une erreur car elle n’accepte qu’une seule valeur scalaire de la sous-requête pour l’affecter à la variable, tandis que L’instruction SELECT accepte cette situation, dans laquelle la sous-requête retournera plusieurs valeurs, sans générer d’erreur. Vous n’aurez cependant aucun contrôle sur la valeur qui sera affectée à la variable, où la dernière valeur renvoyée par la sous-requête sera affectée à la variable.

supposons que nous devons affecter la valeur de nom du deuxième groupe de la table SetVsSelectDemo créée précédemment à la variable SQL @EmpName., Rappelez-vous que le deuxième groupe de cette table contient deux enregistrements dans le jeu de résultats comme indiqué ci-dessous:

le script utilisé pour attribuer la valeur de la variable @EmpName à partir de la table SetVsSelectDemo à l’aide des instructions SET et SELECT sera comme:

en raison du fait que, l’instruction subquery a renvoyé deux enregistrements,, car l’instruction SET ne peut attribuer qu’une seule valeur aux variables.,l réussir sans erreur, en attribuant le nom du deuxième enregistrement retourné, qui est « Zaid”, à la variable comme indiqué dans les messages de résultat ci-dessous:

Nous pouvons apprendre du résultat précédent que, lorsque vous vous attendez à ce que la sous-requête renvoie plus d’une valeur, il est préférable d’utiliser L’instruction SET pour attribuer une valeur à la variable en implémentant un mécanisme de gestion valeur renvoyée à la variable SQL, sans erreur renvoyée pour nous avertir que la sous-requête renvoyait plusieurs valeurs.,

Assign no value

Une autre différence entre l’affectation de valeurs aux variables SQL à l’aide des instructions SET et SELECT, est lorsque la sous-requête utilisée pour attribuer une valeur à la variable ne renvoie aucune valeur. Si la variable précédemment déclarée n’a pas de valeur initiale, L’instruction SET et SELECT agiront de la même manière, en attribuant une valeur NULL à cette variable.

supposons que nous devons affecter à la variable @EmpName, sans valeur initiale, le nom du cinquième groupe de la table SetVsSelectDemo.,lectDemo WHERE GroupNumber = 5

SELECT @EmpName AS SELECT_Name
GO

N’ayant aucune valeur initiale pour la variable @EmpName, et aucune valeur renvoyée par la sous-requête, une valeur NULL sera affectée à cette variable dans les deux cas, comme indiqué clairement dans le message de résultat ci-dessous:

si la variable SQL précédemment déclarée a une valeur initiale et que la sous-requête utilisée pour attribuer une valeur à la variable ne renvoie aucune valeur, l’instruction SET et Select se comportera de différentes manières., Dans ce cas, L’instruction SET remplacera la valeur initiale de la variable et renverra la valeur NULL. Au contraire, L’instruction SELECT ne remplacera pas la valeur initiale de la variable et la renverra, si aucune valeur n’est renvoyée par la sous-requête d’attribution.,script ci-dessous:

compte tenu du fait que la sous-requête assignante n’a pas modifié de valeur, la requête qui a utilisé L’instruction SET pour attribuer une valeur à la variable SQL remplacera la valeur initiale de la variable, renvoyant une valeur NULL, tandis que la requête qui a utilisé L’instruction SELECT pour attribuer une valeur à la variable conservera la valeur initiale sans changement car aucune valeur n’est renvoyée par la sous-requête, comme indiqué clairement dans les résultats ci-dessous:

conclusion

SQL Server nous fournit deux méthodes principales qui sont utilisées pour attribuer des valeurs aux variables SQL., Dans la plupart des cas, les instructions SET et SELECT remplissent la tâche d’affectation de valeur de variable sans problème.,de la sous-requête à la variable, sans contrôle de votre côté

  • Si la sous-requête assignante ne renvoie aucune valeur, L’instruction SET remplacera la valeur initiale de la variable sur NULL, tandis que L’instruction SELECT ne remplacera pas sa valeur initiale
    • Author
    • Recent Posts
    Ahmad Yaseen est un ingénieur Big Data Microsoft avec une connaissance approfondie et une expérience dans les domaines SQL bi, SQL Server administration de base de données et de développement.,
    Il est expert en solutions Microsoft Certified en gestion et analyse de données, Microsoft Certified Solution Associate en administration et développement de bases de données SQL, Azure Developer Associate et Microsoft Certified Trainer.
    En outre, il contribue avec ses conseils SQL dans de nombreux blogs.,
    Afficher tous les articles par Ahmad Yaseen

    Derniers messages par Ahmad Yaseen (voir tous)
    • Comment faire pour surveiller Azure Data Factory – 15 janvier 2021
    • Utilisation de la Source de Contrôle dans Azure Data Factory – 12 janvier 2021
    • à l’Aide de Modèles dans Azure Data Factory – 8 janvier 2021

    Leave A Comment