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。