为什么这个SQL Server语句以分号(;)开头?

时间:2015-08-10 14:16:13

标签: sql-server xml tsql

在网上搜索有关使用XML与SQL Server加入/拆分/非规范化数据的一些帮助,我找到了this page,我对下面粘贴的样本中的起始分号很感兴趣。这是为什么 ;那里 ?

;WITH cte AS (
    SELECT 
        DeveoperID,
        CAST('<r>' + REPLACE(ProjectCodes, ',', '</r><r>') + '</r>' AS XML) AS ProjectCodes
    FROM @DeveloperProjectCSV
)
SELECT 
    DeveoperID,
    xTable.xColumn.value('.', 'VARCHAR(MAX)') AS ProjectCode
FROM cte
CROSS APPLY ProjectCodes.nodes('//r') AS xTable(xColumn)

1 个答案:

答案 0 :(得分:2)

它用于结束之前的语句或批处理语句,因此它实际上是前一个语句的一部分。

如果with是第一个语句,则不需要它。它通常被习惯包含在with中,即使不需要它也是如此。我倾向于这样做只是为了确保先前的语句已经结束,但正确使用分号将是在前一个语句的末尾(它所属的地方)使用它。

公用表表达式的文档声明:

  

当CTE用于作为批次一部分的语句中时,   之前的陈述必须后跟分号。

一些有用的文档:

MSDN:WITH common_table_expression (Transact-SQL)