- Transact-SQL
-
Le Transact-SQL (T-SQL) est une extension propriétaire de Microsoft et Sybase au langage SQL. Microsoft a inclus le T-SQL dans son serveur de base de données Microsoft SQL Server alors que Sybase l'utilise dans son Adaptive Server Enterprise successeur de Sybase SQL Server.
Par rapport au SQL, le T-SQL ajoute les fonctionnalités suivantes :
- Éléments de programmation procédurale (boucle, conditions...).
- La possibilité de créer et d'utiliser des variables locales.
- Des fonctions de manipulations de chaîne de caractères, de dates et de calculs mathématiques.
Sommaire
Programmation procédurale
Les principaux mots clefs permettant des instructions de programmation procédurale en Transact-SQL sont
BEGIN
etEND
,BREAK
,CONTINUE
,GOTO
,IF
etELSE
,RETURN
,WAITFOR
, etWHILE
.IF
etELSE
permettent des exécutions conditionnelles. L'exemple ci-dessous va afficher "Nous sommes en week-end" si le jour J appartient au week-end, "Nous sommes en semaine" pour un jour de la semaine.IF DATEPART(dw, GETDATE()) = 6 OR DATEPART(dw, GETDATE()) = 7 PRINT 'Nous sommes en week-end.' ELSE PRINT 'Nous sommes en semaine.'
BEGIN
andEND
délimite un bloc d'instruction. Si plus d'une instruction sont nécessaires dans un bloc conditionnel, il faut utiliser BEGIN et END :IF DATEPART(dw, GETDATE()) = 6 OR DATEPART(dw, GETDATE()) = 7 BEGIN PRINT 'Nous sommes en week-end.' PRINT 'Faites une pause !' END ELSE BEGIN PRINT 'Nous sommes en semaine.' PRINT 'Vite, au boulot !' END
WAITFOR
va permettre de temporiser la procédure, en attendant un certain temps ou un moment précis de la journée.RETURN
est utilisé pour terminer immédiatement l'exécution d'une procédure stockée ou bien renvoyer le résultat d'une fonction.BREAK
va terminer le bloc d'une boucleWHILE
, tandis queCONTINUE
force l'exécution d'une nouvelle itération de la boucle.Opérateurs
Opérateurs arithmétiques
Transact-SQL permet l'utilisation des opérateurs arithmétiques classiques.
- + (Plus)
- - (Moins)
- * (Multiplié)
- / (Divisé)
- % (Modulo)
Opérateurs de comparaison
- = (Égal à)
- > (Supérieur à)
- < (Inférieur à)
- >= (Supérieur ou égal à)
- <= (Inférieur ou égal à)
- != (Différent de)
- <> (Différent de), non standardisé par l'ISO
- !< (Non inférieur à), non standardisé par l'ISO
- !> (Non supérieur à), non standardisé par l'ISO
Variables locales
Les variables locales sont souvent utilisées comme compteurs dans des boucles
WHILE
ou des blocs de typesIF ... ELSE
. Elles peuvent être utilisées dans des commandes ou dans des procédures stockées. La procédure utilise ces variables de manière automatique et non-interactive lorsqu'elle est exécutée. Les variables locales peuvent être utilisées partout où la syntaxe de Transact-SQL exige l'utilisation d'une expression.Déclaration
La déclaration de variables locales est similaire à celle de langages impératifs classiques. Elle suit la syntaxe suivante :
declare @nom_variable type_données [, @nom_variable type_données]...
Exemples :
declare @a int declare @b char(20) declare @c float
OU
declare @a int, @b char(20), @c float
La deuxième syntaxe est plus efficace en termes de mémoire et de performance.
Utilisation dans des sous-routines
Une sous-routine assignant une valeur à une variable locale ne doit retourner qu'une seule valeur.
Exemples :declare @veryhigh money select @veryhigh = max(price) from titles if @veryhigh > $20 print "Aïe!"
declare @one varchar(18), @two varchar(18) select @one = "un", @two = "deux" if @one = "un" print @one if @two = "deux" print @two
declare @tcount int, @pcount int select @tcount = (select count(*) from titles), @pcount = (select count(*) from publishers) select @tcount, @pcount
Valeur NULL
Les variables locales ont initialement pour valeur NULL lorsqu'elles sont déclarées. Elles peuvent également recevoir la valeur NULL d'une commande SELECT. NULL étant une valeur spéciale, la comparaison entre des variables de valeur NULL et d'autres valeurs NULL doit suivre des règles particulières qui sont résumées dans le tableau ci-dessous.
Une expression peut être une variable, une constante, ou une combinaison des deux contenant des opérateurs arithmétiques.Comparaisons entre valeurs NULL Type de Comparaison Opérateur = Opérateurs <, >, <=, !=, !<, !>, <> Comparaison entre deux colonnes de valeur NULL FALSE FALSE Comparaison entre colonne de valeur NULL et expression NULL FALSE FALSE Comparaison entre expression NULL et colonne de valeur NULL FALSE FALSE Comparaison entre deux expressions NULL TRUE FALSE DELETE et UPDATE
Le Transact-SQL permet d'ajouter une clause
FROM
aux opérationsDELETE
etUPDATE
, permettant la jointure de tables.L'exemple ci-dessous va effacer de la table
utilisateur
ceux qui ont le drapeau "En attente".DELETE utilisateur FROM utilisateur as u JOIN drapeau_utilisateur as d ON u.id = d.id WHERE d.nom = 'En attente'
Critiques
Voir aussi
- Adaptive Server Enterprise (Sybase)
- PL/pgSQL (PostgreSQL)
- PL/SQL (Oracle)
- SQL (ANSI)
- SQL Server (Microsoft)
Wikimedia Foundation. 2010.