Comment partager des variables entre requêtes dans SQL Server
Dans SQL Server, il n'y a pas de concept de variables globales en tant que telles. Cependant, si vous devez réutiliser certaines valeurs dans plusieurs requêtes ou bases de données, vous pouvez envisager plusieurs approches :
Utilisation de variables scalaires
Bien que vous puissiez déclarer des variables scalaires au sein de requêtes individuelles, ces variables ne sont pas accessibles en dehors de leur portée. Pour utiliser la même variable sur plusieurs requêtes, vous pouvez la déclarer au début de votre script :
DECLARE @GLOBAL_VAR_1 INT = Value_1 DECLARE @GLOBAL_VAR_2 INT = Value_2
Cependant, cette approche peut entraîner des erreurs si vous tentez d'utiliser les variables dans un contexte de base de données différent.
Utilisation des variables SQLCMD
Le mode SQLCMD, disponible dans SQL Server Management Studio (SSMS), permet de définir des variables limitées au lot ou au script actuel. Ces variables sont accessibles en utilisant la syntaxe :
$(variable_name)
Pour déclarer une variable SQLCMD :
:setvar variable_name value
Par exemple :
:setvar GLOBAL_VAR_1 10
Vous pouvez ensuite utiliser ceci variable dans les requêtes suivantes :
SELECT * FROM TABLE WHERE COL_1 = $(GLOBAL_VAR_1)
Notez que les variables SQLCMD ne persistent que dans le même script ou batch.
Utilisation de variables de table
Une autre option consiste à créer une variable de table et à y insérer les valeurs souhaitées. La variable de table peut ensuite être jointe ou interrogée sur plusieurs lots ou bases de données.
DECLARE @GlobalVars TABLE ( Name VARCHAR(50), Value INT ) INSERT INTO @GlobalVars (Name, Value) VALUES ('GLOBAL_VAR_1', 10), ('GLOBAL_VAR_2', 20) SELECT * FROM TABLE JOIN @GlobalVars ON TABLE.VarName = @GlobalVars.Name
Cette approche offre plus de flexibilité et peut être utilisée dans divers scénarios où le partage de variables est requis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!