为t-sql命名存储过程的最佳实践是什么?

Gal*_*kin 25 sql t-sql sql-server stored-procedures

我曾与几个大型数据库合作,存储过程的名称非常不同:

SP_PrefixXXX
PrefixYyyXxx
Prefix: Rep, Act
Run Code Online (Sandbox Code Playgroud)

什么是命名的最佳实践?我该如何以正确的方式组织它们?

Guf*_*ffa 52

sp_前缀代表系统过程,它应该不会被用来作为前缀的正常程序.如果这样做,它将首先在master每次查找过程时额外访问数据库,如果它与其中一个过程具有相同的名称,则将执行该过程而不是您的过程.

除此之外,您可以自由地编写您喜欢的任何命名约定.我们公司使用的是subsystem_object_action,例如main_Customer_Get.这使得属于一起的过程在列表中彼此接近.

  • 我在SQL Server 2008R2上测试了你的"它将首先为主人做一次额外的旅行":1.在我的数据库和master中创建sp_Mine,第一个打印"我的#1",另一个打印"master#2" ".2.在我的数据库中运行proc - 并打印出"我的#1"!我希望如果SQL Server首先进入master,它会发现另一个proc并且会打印"master#2"而不是.. 3.然后我在我的db中创建了"sp_autostats"(以sys proc命名) master db)在这种情况下它调用了master proc.也许你的陈述只适用于master中的[sys] procs? (5认同)

Aar*_*ton 7

最好的命名约定是整个数据库中一致的:)

真的,这取决于你和你的团队.只要它清晰明了,你就有一点余地.只要确保无论你决定什么,每个人都坚持它.比大会本身更重要的是每个人都坚持下去.

我倾向于避免使用sp_,usp_等,因为我发现它们是多余的.例如,名为InsertCustomer的sproc显然是一个sproc,并且绝不会混淆表,视图或任何其他类型的对象.特别是应该避免使用sp_.

我更喜欢CamelCase,但同样,这是一个偏好问题.我喜欢我的proc名称,以便很好地指示proc的作用 - 例如:

InsertSalesOrder PopulateItemStagingTables CalculateOrderSummary PrepareCustomerStatements

等等

  • 请,请不要使用sp_!这就像说你的观点需要以view_为前缀,或者你的表与table_ ...认真对待!元数据是胜利. (3认同)
  • 不是camelCase和PascalCase吗? (3认同)

rva*_*her 7

我喜欢为它们添加前缀,以便将SP处理特定对象的组合在一起.所以,而不是像:

    InsertUser
    UpdateUser
    DeleteUser
    GetUsers

我是这样做的:

    AppName_User_GetUser
    AppName_User_InsertUser
    AppName_User_UpdateUser
    AppName_User_DeleteUser

我发现这对我来说更容易在我的SQL管理应用程序和代码中进行管理.

像其他人说的那样,不要用sp_作为前缀

  • _**AppName**_ User_GetUser_不是存储过程IMO的好名称.存储过程是任何连接到数据库的应用程序都应该可以通用的对象.如果有多个应用程序连接到数据库怎么办?如果您的应用程序名称发生变化 我已经看到很多以很久以前的应用程序命名的存储过程.数据库对象往往比大多数应用程序寿命更长,因此明智地命名它们. (3认同)

Joh*_*ers 6

不是"sp_",也不是"usp_".我们知道它们是存储过程,命名方案不需要告诉我们.

我通常只是为他们所做的事情命名,可能在模式上将它们分区.例外情况是我将对存储过程使用"ssis_"前缀,这些存储过程不直接用作"正常"数据库操作的一部分,但是SSIS包用它来引用数据库.我可以使用"fn_"来表示一个函数,以区别于存储过程.


小智 6

我不知道在这种情况下是否确实存在特定的"最佳实践".对于我现在的公司,标准是usp [ProcedureName](没有下划线).我个人不会喜欢任何前缀,但是如果你是一个新的公司或项目并且他们有预先存在的标准,除非他们使用sp_哪里有技术原因不使用它,它可能不是值得辩论的问题,因为我当然不认为在这种情况下是一个令人震惊的标准.

一般来说,重新命名惯例,如果你确实有辩论而其他团队成员不同意你,而且共识标准不同,那么最好的政策就是尽快让它去接受共识; 一致性通常比实际标准本身更重要,因为它与其他团队成员相处得很好,而不是因为"困难"而建立声誉.