Exemples d’affectations de variables en ligne sous SQL Server 2008

Voici quelques exemples simples de code qui montrent que sous SQL Server 2008, on peut non seulement se passer des sempiternelles deux lignes de code nécessaires jusqu’en version 2005 pour déclarer et affecter d’un valeur une variable, mais on peut aller encore plus loin …

Voici un exemple de déclaration et d’affection en ligne :

1
2
3
4
5
6
7
---------------------------------
-- Nicolas SOUQUET - 07/06/2009 -
-----------------------------------
Déclaration et affectation en ligne
DECLARE @deux TINYINT = 2;
-- Affichage
SELECT @deux AS AffectationEnLigne

Alors que jusque sous SQL Server 2005, nous devons écrire :

1
2
3
4
5
6
7
8
9
10
11
---------------------------------
-- Nicolas SOUQUET - 07/06/2009 -
---------------------------------
-- Déclaration
DECLARE @deux TINYINT;
 
-- Affectation
SET @deux = 2;
 
-- Affichage
SELECT @deux AS AffectationEnLigne;

Mais on peut aller encore plus loin avec ce qui peut vous rappeler la surcharge d’opérateurs dans la programmation par objets, ou certains langages de programmation modernes :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---------------------------------
-- Nicolas SOUQUET - 07/06/2009 -
---------------------------------
-- Déclaration et affectation en ligne
DECLARE @deux TINYINT = 2; SELECT @deux AS AffectationEnLigne
 
-- Addition en ligne => 4
SELECT @deux += 2; SELECT @deux AS AdditionEnLigne
 
-- Soustraction en ligne => 2
SELECT @deux -= 2; SELECT @deux AS SoustractionEnLigne
 
-- Multiplication en ligne => 4
SELECT @deux *= 2; SELECT @deux AS MultiplicationEnLigne
 
-- Division en ligne => 2
SELECT @deux /= 2 ; SELECT @deux AS DivisionEnLigne

L’exécution du code suivant affiche sous SQL Server Management Studio 2008:

Voyons maintenant la combinaison de déclarations avec des requêtes :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
---------------------------------
-- Nicolas SOUQUET - 07/06/2009 -
---------------------------------
-- Selection et affection en ligne
CREATE TABLE TEST
(
  Valeur TINYINT
)
GO
 
SET NOCOUNT ON;
GO
 
INSERT INTO dbo.TEST (Valeur) VALUES (1);
INSERT INTO dbo.TEST (Valeur) VALUES (2);
INSERT INTO dbo.TEST (Valeur) VALUES (3);
GO
 
DECLARE @max TINYINT = (SELECT MAX(Valeur) FROM dbo.TEST),
    @min TINYINT = (SELECT MIN(Valeur) FROM dbo.TEST),
    @sum TINYINT = (SELECT SUM(Valeur) FROM dbo.TEST),
    @val TINYINT = (SELECT TOP 1 Valeur FROM dbo.TEST);
   
SELECT @max AS MaxEnLigne,
    @min AS MinEnLigne,
    @sum AS SommeEnLigne,
    @val AS PremiereValeur
GO

L’exécution du code suivant affiche sous SQL Server Management Studio 2008:

ElSuket

Laisser un commentaire