单SP与多个

时间:2013-09-09 10:47:31

标签: sql stored-procedures table-valued-parameters

我正在开发一个全新的SQL 2008 R2数据库。我创建了一些表和程序。目前我有两个程序:

  • [spInsertUser](@ patchID,@ firstName,@ lastName,...):在[用户]表格中创建一个与批次关联的用户。
  • [spInsertUserBatch](@ badID,@ ulUsers):在[User]表中插入多个用户,所有用户都使用相同的批处理。

第二个过程[spInsertUserBatch]实现了一个用户定义的表类型,其中包含创建用户所需的所有字段,但显然,它们用作参数,允许在单个查询中创建多个用户。

我想知道的是:我应该坚持使用两个程序,一个将所有字段作为参数,另一个将表作为参数,或者我应该删除[spInsertUser]并仅使用{ {1}},即使创建单个用户?

我喜欢为了维护而废弃单用户插入程序的想法(一对二)但是我不确定是否有一些我不知道有关表值参数和使用时的内容它们用于插入单个条目。

单个用户插入可能比批量插入更频繁。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果你有两个这样的存储过程,那么你似乎需要从调用代码中获取这两个存储过程。插入单个记录的存储过程肯定比需要表作为参数的存储过程更简单。

我建议根据另一个实现其中一个存储过程。如果spInsertBatch循环播放并一次添加一条记录,则调用循环内的spInsertUser。如果spInsertBatch在一个批处理中进行插入,则通过填充表变量并调用spInsertUser来重新实现spInsertBatch

通过在一个位置执行实际插入,您可以在一个位置控制日志记录,数据验证和业务逻辑检查。通过保留两个存储过程,您可以简化进行调用的代码的接口。