存储过程的模式?

Sta*_*low 5 sql t-sql database stored-procedures

是否有任何用于编写存储过程的模式?喜欢:

  1. 我们应该写1个Sp用于更新,1个用于插入,1个用于每个表的选择.
  2. 什么时候创建视图很好.
  3. 如何在SP中管理业务规则?
  4. 如何减少重复代码等.

任何关于这些模式的好文章或书籍......

谢谢

Ste*_*dit 6

通常,存储过程遵循CRUD(http://en.wikipedia.org/wiki/Create,_read,_update_and_delete)模式,但它们不必限于此.

1)您可能想要组合更新和插入.如果主键已填充,那么它是一个更新,否则它是一个插入.对于GUID和其他客户端生成的密钥,首先更新,如果rowcount为零,则需要进行插入.插入/更新过程通常返回主键.

您将需要get_by_id proc以及一些get_by_non-unique-criteria,它们返回任意数量的行.我们的想法是确保结果集中的列在所有get/list过程中都是相同的.

这些过程的目标不一定是一个表,甚至是一个视图,而是一个逻辑实体,因此您可能需要对关系和查找进行各种连接.返回多个结果集可能会有所帮助.

2)观点很方便,但与此并不特别相关.有时它们有助于重用,但并非总是如此.

3)这一切都取决于业务规则.您当然可以防止存储过程级别的某些类型的数据损坏,但它可以或应该知道多少是有限的.话虽如此,有一些特殊用途案例,您可能希望在proc中添加更多逻辑,例如登录.

4)你不能总是这样做,但你有时可以将公共代码分解为用户不调用的低级stord proc.

希望这是一个开始.