T-SQL 注释你注意了吗?

作者:vkvi 来源:ITPOW(原创) 日期:2007-4-20

SQL 注释 一文中指出了 T-SQL 的注释字符,但没有作出使用注意,致使一些注释符变得无效。

  • --(双连字符),单行注释。
  • /* ... */(正斜杠-星号对),多行注释。
  • --(双连字符),SQL-92标准。
  • /* ... */(正斜杠-星号对),T-SQL标准。
  • --(双连字符),注释长度无限制。
  • /* ... */(正斜杠-星号对),注释长度无限制。
  • --(双连字符),不能以 GO 开头?
  • /* ... */(正斜杠-星号对),不能以 GO 开头?

有争议的是最后一点,不能以 GO 开头?(T-SQL 中的 GO 是什么意思?)SQL Server 联机丛书上的原话是:在注释中包含 GO 命令会生成一个错误信息。而后又作了补充:当实用工具在一行的前两个字节中读到字符 GO 时,则把从上一 GO 命令开始的所有代码作为一个批处理发送到服务器。

很明显在“--”注释符中,注释中的 GO 字符不可能出现在一行的前两个字符,因为注释总是以“--”开头。

而“/*...*/”注释中,则的确不能以 GO 开头,比如:

/*
select
GO
*/

在查询分析器中就会出现类似如下错误:

服务器: 消息 113,级别 15,状态 1,行 1
缺少注释的结尾标记 '*/'。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '*' 附近有语法错误。

不过有三点同样应该注意:

  • GO 忽略大小写的。
  • 查询分析器会忽略一行语句前端的英文空格,也就是说“  GO”和“GO”是一样的。
  • 开头不能含 GO 仅限于 SQL 查询分析器、osql 和 isql,不包括 SQL Server。
相关文章