Maison >base de données >tutoriel mysql >Pourquoi utiliser un point-virgule avant un CTE dans SQL Server ?

Pourquoi utiliser un point-virgule avant un CTE dans SQL Server ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 13:31:42724parcourir

Why Use a Semicolon Before a CTE in SQL Server?

CTE (Common Table Expression) et le point-virgule : pourquoi est-il utilisé ?

Dans SQL Server, les instructions CTE (Common Table Expression) ont généralement un point-virgule avant l’expression. Ce n'est pas une exigence pour la terminaison d'une instruction dans SQL Server, alors pourquoi est-il utilisé avec les CTE ?

Une des raisons est d'éviter toute ambiguïté. WITH peut être utilisé dans d'autres contextes que les CTE, tels que :

  • FROM ..WITH (NOLOCK) pour contrôler le comportement de verrouillage
  • RESTORE ..WITH MOVE pour restaurer des bases de données

L'utilisation d'un point-virgule avant le CTE garantit qu'il n'est pas confondu avec l'un de ces autres contextes.

De plus, bien que les instructions dans SQL Server puissent éventuellement se terminer par un point-virgule, il est recommandé de les utiliser de manière cohérente. Cela évite les erreurs qui peuvent survenir lorsque les instructions ne sont pas correctement terminées.

Pour les CTE en particulier, l'utilisation d'un point-virgule avant l'expression garantit que toutes les instructions précédentes sont correctement terminées. Par exemple :

DECLARE @foo int;

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

est équivalent à :

DECLARE @foo int

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

En utilisant un point-virgule avant l'expression CTE, il est clair que l'instruction DECLARE précédente est terminée.

De même, la commande MERGE nécessite un point-virgule avant l'instruction MERGE, même s'il ne s'agit pas d'un CTE. Cela évite encore une fois toute ambiguïté et garantit une terminaison correcte de la déclaration.

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