存储过程的命名约定是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我已经看到了命名存储过程的各种规则。

一些人在sprop名称前面加上了usp_,其他人名字是应用程序名称的缩写,还有一些人是拥有者名字的。除非你确实是这个意思,否则你不应该在SQL Server中使用sp_。

一些用动词(Get,Add,Save,Remove)启动proc名称。其他人则强调实体名称。

在拥有数百个sprocs的数据库中,当您认为已存在的sproc时,可能很难滚动并找到合适的sproc。命名约定可以使查找更简单。

你使用命名约定吗?请描述它,并解释为什么你比其他选择更喜欢它。

  • 每个人似乎都主张命名的一致性,对每个人来说,使用相同的命名约定可能比使用特定约定更重要。
  • 前缀:虽然很多人使用usp_或类似的东西(但很少使用sp_),但许多人使用数据库或应用程序名称。一个聪明的DBA使用gen,rpt和tsk来区分用于报告或任务的一般CRUD sprocs。
  • 动词+名词似乎比名词+动词稍微受欢迎。有些人为动词使用SQL关键字(选择,插入,更新,删除),而其他人则使用非SQL动词(或缩写),如Get和Add。有些区分singluar和复数名词来表示是否正在检索一个或多个记录。
  • 在适当的地方,最后建议增加一句话。GetCustomerById,GetCustomerBySaleDate。
  • 有些人在名字段之间使用下划线,有些人避免使用下划线。app_ Get_Customer与appGetCustomer - 我想这是一个可读性问题。
  • 可以将大量sprocs分为Oracle包或Management Studio(SQL Server)解决方案和项目或SQL Server架构。
  • 应该避免不可思议的缩写。

提问于
用户回答回答于

对于我上一个项目,我使用了usp_ [Action] [Object] [Process],例如usp_AddProduct或usp_GetProductList,usp_GetProductDetail。但是,现在数据库处于700个程序以上,找到特定对象上的所有程序变得更加困难。例如,我现在必须搜索产品添加的50个奇数添加过程,并获取50个奇数等。

因为在我的新应用程序中,我正在计划按对象对过程名称进行分组,除此之外,我还放弃了usp,因为我觉得它有点多余,除了告诉我它的一个过程,我可以从程序本身。

新格式如下

[App]_[Object]_[Action][Process]

App_Tags_AddTag
App_Tags_AddTagRelations
App_Product_Add 
App_Product_GetList
App_Product_GetSingle

它有助于将事情分组以便稍后查找,特别是在有大量sprocs的情况下。

关于使用多个对象的情况,我发现大多数实例都有主对象和辅助对象,所以主对象在普通实例中使用,次对象在进程段中引用,例如App_Product_AddAttribute。

用户回答回答于

以下是关于SQL Server中sp_前缀问题的一些说明。

用前缀sp_命名的存储过程是存储在主数据库中的系统sprocs。

如果你给这个前缀添加了sproc,SQL Server首先在主数据库中查找它们,然后在上下文数据库中查找它们,从而不必要地浪费资源。而且,如果用户创建的sproc与系统sproc具有相同的名称,则用户创建的sproc将不会执行。

sp_前缀表示sproc可以从所有数据库访问,但它应该在当前数据库的上下文中执行。

扫码关注云+社区