当我在CREATE PROCEDURE
命令前写一些注释时,这些注释似乎被保留为过程定义的一部分。
例如,当我创建这样的过程时
/*Comment header*/
CREATE OR ALTER PROCEDURE example_procedure
AS
SELECT 1 AS Id
被/*Comment header*/
存储为定义的一部分。
这是有记录的行为吗?我总能依赖它吗?还是这只是一些不可靠的 SQL Server 怪癖?
我的天真理解是,过程定义以CREATE
关键字开头,因此我犹豫是否要依赖违背我的直觉的行为。
是的,只要它位于同一个批次中。这很直观,因为语句
CREATE PROCEDURE
是整个批次(不能有任何其他语句),因此该批次中的所有内容都作为过程的一部分包含在内。我不知道这是否有记录在案,但它一直都是这样工作的,如果情况有所不同,那么对每个人的源代码版本控制来说都会是一个重大的突破性变化,所以微软不太可能修改这种行为。
视图、触发器和函数
CREATE
语句具有相同的效果。