【问题标题】:What's the difference between CREATE PROC and CREATE PROCEDURE?CREATE PROC 和 CREATE PROCEDURE 有什么区别?
【发布时间】: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


【解决方案1】:

两者没有区别。

编辑以回答您的新问题 - 这里没有“冗余”,一个只是另一个的简写。 “过程”是一个相当长的词,人们往往喜欢事物的捷径。同理,“Exec”和“Execute”是一样的。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @Barranka 错误...是的,确实如此。
猜你喜欢
  • 2019-07-03
  • 2010-11-16
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2020-11-08
  • 2017-10-22
相关资源
最近更新 更多