Transact-SQL - Transact-SQL
Transact-SQL ( T-SQL ) est l' extension propriétaire de Microsoft et Sybase du SQL (Structured Query Language) utilisé pour interagir avec les bases de données relationnelles . T-SQL étend le standard SQL pour inclure la programmation procédurale , les variables locales , diverses fonctions de support pour le traitement des chaînes, le traitement des dates, les mathématiques, etc. et les modifications apportées aux instructions DELETE et UPDATE .
Transact-SQL est essentiel à l'utilisation de Microsoft SQL Server . Toutes les applications qui communiquent avec une instance de SQL Server le font en envoyant des instructions Transact-SQL au serveur, quelle que soit l'interface utilisateur de l'application.
Les procédures stockées dans SQL Server sont des routines exécutables côté serveur. L'avantage des procédures stockées est la possibilité de passer des paramètres.
Variables
Transact-SQL fournit les instructions suivantes pour déclarer et définir des variables locales : DECLARE
, SET
et SELECT
.
DECLARE @var1 NVARCHAR(30);
SET @var1 = 'Some Name';
SELECT @var1 = Name
FROM Sales.Store
WHERE CustomerID = 100;
Contrôle de flux
Les mots clés pour le contrôle de flux dans Transact-SQL incluent BEGIN
et END
, BREAK
, CONTINUE
, GOTO
, IF
et ELSE
, RETURN
, WAITFOR
, et WHILE
.
IF
et ELSE
autoriser l'exécution conditionnelle. Cette instruction batch imprimera "C'est le week-end" si la date actuelle est un jour de week-end, ou "C'est un jour de semaine" si la date actuelle est un jour de semaine. (Remarque : ce code suppose que le dimanche est configuré comme le premier jour de la semaine dans le @@DATEFIRST
paramètre.)
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
PRINT 'It is the weekend.';
ELSE
PRINT 'It is a weekday.';
BEGIN
et END
marquez un bloc d'instructions . Si plusieurs instructions doivent être contrôlées par le conditionnel dans l'exemple ci-dessus, nous pouvons utiliser BEGIN
et END
comme ceci :
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
BEGIN
PRINT 'It is the weekend.';
PRINT 'Get some rest on the weekend!';
END;
ELSE
BEGIN
PRINT 'It is a weekday.';
PRINT 'Get to work on a weekday!';
END;
WAITFOR
attendra un laps de temps donné, ou jusqu'à une heure particulière de la journée. L'instruction peut être utilisée pour des retards ou pour bloquer l'exécution jusqu'à l'heure définie.
RETURN
est utilisé pour revenir immédiatement d'une procédure stockée ou d'une fonction.
BREAK
termine la WHILE
boucle englobante , tandis que CONTINUE
la prochaine itération de la boucle s'exécute. Un exemple de WHILE
boucle est donné ci-dessous.
DECLARE @i INT;
SET @i = 0;
WHILE @i < 5
BEGIN
PRINT 'Hello world.';
SET @i = @i + 1;
END;
Modifications des instructions DELETE et UPDATE
Dans Transact-SQL, les instructions DELETE
et UPDATE
sont améliorées pour permettre aux données d'une autre table d'être utilisées dans l'opération, sans avoir besoin d'une sous-requête :
-
DELETE
accepte les tables jointes dans laFROM
clause, de la même manière queSELECT
. Lorsque cela est fait, le nom ou l'alias de la table de la jointure à supprimer est placé entreDELETE
etFROM
. -
UPDATE
permetFROM
d'ajouter une clause. La table à mettre à jour peut être soit jointe dans laFROM
clause et référencée par alias, soit référencée uniquement au début de l'instruction selon le SQL standard.
Cet exemple supprime tous ceux users
qui ont été marqués avec l'indicateur « Idle ».
DELETE u
FROM users AS u
INNER JOIN user_flags AS f
ON u.id = f.id
WHERE f.name = 'idle';
INSERTION EN VRAC
BULK
est une instruction Transact-SQL qui implémente un processus de chargement de données en masse, insérant plusieurs lignes dans une table, lisant les données à partir d'un fichier séquentiel externe. L'utilisation de BULK INSERT
résultats donne de meilleures performances que les processus qui émettent des INSERT
instructions individuelles pour chaque ligne à ajouter. Des détails supplémentaires sont disponibles dans MSDN .
ESSAYEZ LA CAPTURE
À partir de SQL Server 2005, Microsoft a introduit une TRY CATCH
logique supplémentaire pour prendre en charge le comportement des types d'exception. Ce comportement permet aux développeurs de simplifier leur code et d'omettre la @@ERROR
vérification après chaque instruction d'exécution SQL.
-- begin transaction
BEGIN TRAN;
BEGIN TRY
-- execute each statement
INSERT INTO MYTABLE(NAME) VALUES ('ABC');
INSERT INTO MYTABLE(NAME) VALUES ('123');
-- commit the transaction
COMMIT TRAN;
END TRY
BEGIN CATCH
-- roll back the transaction because of error
ROLLBACK TRAN;
END CATCH;
Voir également
- Adaptive Server Entreprise (Sybase)
- PL/SQL (Oracle)
- PL/pgSQL (PostgreSQL)
- SQL/PSM (norme ISO)
- Sys.sysobjects
- Flux de données tabulaires