设置基于操作并调用存储过程

kri*_*tof 6 sql sql-server

我正在研究一个存储过程,它对类中的学生执行一些操作

在最后一步中,它根据某些标准更新了一些学生的状态.

这一切都很直接,但我在这里陷入两难境地.基本上系统中存在一个名为sp的sp

pUpdateStudentStatus(studentID, statusID, comments, userID)
Run Code Online (Sandbox Code Playgroud)

只要更新单个用户的状态,应用程序就会使用此sp.除了更新状态外,它还会记录StudentStatusHistory表中的更改.

所以这就是我的困境,

  • 如果我想使用该存储过程,我需要遍历记录(通过游标或通过自己写循环)
  • 如果我想保持所有操作集基础我需要从pUpdateStudentStatus复制逻辑(将来可能会改变)

还有其他选择吗?你会选哪一个?

我相信使用更新触发器的替代方法不是一种方法,因为我需要一些额外的细节,例如更改状态的用户的userId和注释

我使用的是SqlServer2005

Ed *_*per 4

您没有说明是pUpdateStudentStatus在您的控制之下还是由第三方创建。

如果它是第三方 SP,我认为您没有太多选择,只能使用游标/循环,因为 SP 的内部结构可能会在未来版本中发生变化。

如果 SP 在您的控制之下,另一个选择是创建一个pUpdateStudentStatus具有新名称的版本,该版本将以基于集合的方式运行(可能通过接受参数表变量),然后重写现有版本pUpdateStudentStatus以充当使用参数表中的一行调用新过程的包装器。