0

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

  • [spInsertUser] (@batchID, @firstName, @lastName, ...):在 [User] 表中创建单个用户,与批次相关联。
  • [spInsertUserBatch] (@batchID, @ubUsers):在 [User] 表中插入多个用户,所有用户都与同一个批次关联。

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

我想知道的是:我应该坚持使用两个过程,一个将所有字段作为参数,另一个将表作为参数,还是应该摆脱[spInsertUser]并只使用[spInsertUserBatch],即使在创建单个用户时也是如此?

我喜欢为了维护而放弃单用户插入过程的想法(一个对两个),但我不确定是否有一些我不知道的关于表值参数以及何时使用它们进行插入单个条目。

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

谢谢!

4

1 回答 1

2

如果您有两个这样的存储过程,那么您似乎需要从调用代码中获取它们。插入单个记录的存储过程绝对比需要表作为参数的存储过程更容易调用。

我建议根据另一个来实现其中一个存储过程。如果spInsertBatch循环遍历并一次添加一条记录,请改为spInsertUser在循环内调用。如果spInsertBatch在单个批次中执行插入,则spInsertUser通过填充表变量并调用spInsertBatch.

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

于 2013-09-09T10:53:28.423 回答