【发布时间】:2015-02-05 18:17:42
【问题描述】:
我搜索了msdn 并没有找到答案。有什么我应该知道的区别吗?
如果真的没有区别,那为什么会有这种冗余呢?
--SQL Server Stored Procedure Syntax
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
[;]
与 DROP PROC 相同
DROP { PROC | PROCEDURE } { [ schema_name. ] procedure } [ ,...n ]
【问题讨论】:
-
一个只是另一个的简写。完全没有区别。
-
您发布的语法解释了。
{ PROC | PROCEDURE }应读作PROC or PROCEDURE- 垂直管道表示 OR。 -
@KenWhite 我知道。我只是想知道如果有区别以及为什么可能不必要的双重性。
-
如果您理解它是 OR,那么您应该清楚它们是同一件事(这就是为什么我假设您没有并解释过)。这也不是冗余;它只是一个简写与长等价物。
-
语法表明两者都受支持,并且文档中没有解释语义差异,因此您可以假设没有差异。 (当存在语义差异时,例如
[ NULL | NOT NULL ],将在文档中进行解释。)它可能只是为了与产品的旧版本兼容而提供。我还没有找到 ISO/IEC 标准要求的证据。 (请注意,语法似乎有错误。我认为应该是[ OUT | OUTPUT ] [READONLY]。)
标签: sql tsql sql-server-2012