扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:IT专家网 来源:IT专家网 2008年1月29日
根据用途来为存储过程命名是很有意义的。例如,GetUserID、InsertDateOfBirth、UpdateEnrollInfo等等,这样对于存储过程的用途就一目了然了。
有时候,可以适当添加后缀来表示存储过程的输入参数。例如GetUserIDByUserNameAndPassword这名称表示该存储过程会通过一个用户名和密码作为输入参数返回用户ID。这可以用来区分功能相似但参数设置不同的存储过程,还可以添加其他相关的存储过程,例如GetUserIDByGUID和GetUserIDByApplicantID。这种命名规范的缺陷就是存储过程的名字会变得很长。
一些开发人员会用特定的标签来为所有的存储程序添加前缀。其中很流行的做法是为存储程序名添加sp_前缀。不过,这里并不推荐这种做法,原因有二。首先,这对数据库性能有轻微的影响,因为SQL Server会先在主数据库中查找所有带有这个前缀的存储过程,虽然这会性能的影响很小,不过在高级和企业系统中,影响可能会放大。其次,由于微软在设计的时候也为系统的存储过程使用了这个前缀,所以始终存在着这种可能,那就是你为自己的存储过程起的名字和某个系统存储过程的名字相同。而且,SQL Server未来发布的版本中可能会引入一个新的系统存储过程,而这个过程与你现有的用户存储过程的名字相同。
如果你实在想要为自己的存储过程添加前缀,那么建议你使用usp_或sproc_这样的前缀。同样的,你可以为某个函数名加上func_这样的前缀,特别是在从应用程序源代码调用存储程序的时候非常有用,因为这让软件开发团队清楚的了解到这是在调用一个存储过程。
SQL存储过程的存档
千万不要忘记把存储过程和函数的T-SQL代码存档。由于简单的查询代码应该是自注释的,而存档将对大型的查询代码非常有用。而存储过程的标准化标头也非常有用,至少能够说明该存储过程的功能。如果手头上没有任何源控制系统,在标头中包括日志变化的内容还能够帮助我们追踪变化的发生。
某存储过程的标头示例如下:
以下是引用片段: /* Description: Gets a user's UserID Author: Brett Burridge Create Date: 11/11/2007 Param: @UserName = User's login name Param: @Password = User's password Return: UserID of the user Modified Date: 01/01/2008 Modification: Added to check to see if their account has been suspended */ |
注意为存储过程添加注释并不会对性能造成任何影响。
数据库对象描述
能够对数据库对象进行描述在某种程度上意味着能够创建自我存档的数据库。
微软早在SQL Server 7.0就引入了一个有用的功能,就是通过表设计窗口为某个表添加描述(Description)。SQL Server 2000通过引入扩展属性(extended properties)加强了这一功能。然而,SQL Server 2000的企业管理器限制了允许属性编辑的功能。不过在 SQL Server 2005中的SQL Server管理工作室GUI允许对扩展属性进行编辑。数据库中的大部分对象(如表、列、视图、函数、存储过程和数据库本身)都具有可编辑的扩展属性。默认状态下,只有单一的扩展属性MS_Description。而且,虽然你可以利用MS_Description扩展属性来为对象添加描述,但如果没有第三方加载工具,就算添加了,用处也并不大。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者