在TSQLV标准中使用

在TSQLV标准中使用,sql,tsql,common-table-expression,ansi-sql,Sql,Tsql,Common Table Expression,Ansi Sql,在tsql或标准SQL功能中,WITH是否不仅仅用于通用表表达式 我问的原因是我想知道为什么在CTEsWITH之前的语句中强制使用分号 我假设分号有助于解析器,特别是当WITH用于多个上下文,或者他们计划在多个上下文中使用它时。ANSI SQL在WITH之前没有分号。实际上,ANSI SQL使用分号作为语句终止符。MS SQL Server从未采用过的东西(虽然现在允许,但它是可选的)。WITH前面的分号不是作为语句的某种前缀,而是作为前一个语句的终止符,因为它假定您可能没有在上一个语句后面加上

tsql
标准SQL
功能中,
WITH
是否不仅仅用于
通用表表达式

我问的原因是我想知道为什么在
CTE
s
WITH
之前的语句中强制使用分号


我假设分号有助于解析器,特别是当
WITH
用于多个上下文,或者他们计划在多个上下文中使用它时。

ANSI SQL在WITH之前没有分号。实际上,ANSI SQL使用分号作为语句终止符。MS SQL Server从未采用过的东西(虽然现在允许,但它是可选的)。
WITH
前面的分号不是作为语句的某种前缀,而是作为前一个语句的终止符,因为它假定您可能没有在上一个语句后面加上一个分号。
WITH
在许多地方都使用(例如,使用加密
或使用复选选项
还原数据库…使用…
)。通常,带
是语句的最后一部分。因此,如果没有分号,解析器无法知道带
是新命令还是最后一个命令的附录…@jarlh tsql也不知道!!它强制使用分号作为前面的语句终止符statement@TomH:实际上分号不会是将来的“可选”:“尽管分号不是此版本SQL Server中大多数语句所必需的,但在将来的版本中它将是必需的”