Maison >base de données >tutoriel mysql >Pourquoi utiliser des points-virgules avant les expressions de table communes (CTE) dans SQL Server ?

Pourquoi utiliser des points-virgules avant les expressions de table communes (CTE) dans SQL Server ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 16:59:40365parcourir

Why Use Semicolons Before Common Table Expressions (CTEs) in SQL Server?

Points-virgules dans les expressions de table communes (CTE) de SQL Server

Dans SQL Server, les expressions de table communes (CTE) incluent souvent un point-virgule devant de la déclaration, comme illustré ci-dessous :

;WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
    FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60

Objectif de la Point-virgule

Le point-virgule sert à deux fins :

  • Évite toute ambiguïté : AVEC peut également être utilisé dans d'autres contextes, tels que :

    • ..DE..AVEC (NOLOCK)..
    • RESTORE..WITH MOVE..
  • Fin d'instruction facultative : Dans SQL Server, les instructions peuvent éventuellement se terminer par ;.

Dans le cadre des CTE, il est recommandé d'utiliser ;WITH pour éviter d'éventuels conflits. Si un CTE est précédé d'une instruction qui ne se termine pas par un point-virgule, l'utilisation accidentelle de WITH dans le cadre de cette instruction pourrait entraîner un comportement inattendu.

Exemple

Considérez la déclaration suivante :

DECLARE @foo int;

WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
...;

Cette déclaration est équivalente à :

DECLARE @foo int;

;WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
...;

Conclusion

L'utilisation de ;WITH avant les instructions CTE ajoute de la clarté et de la cohérence aux requêtes SQL Server. Cela permet d'éviter toute ambiguïté et garantit que les déclarations sont correctement terminées, minimisant ainsi le risque d'erreurs.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn