是否可以运行存储过程来在update语句中设置值 - SQL

时间:2011-09-06 16:38:37

标签: sql sql-server tsql sql-server-2008

我想知道是否可以在TSQL的更新语句中执行存储过程。

我想执行一个存储过程,它将为数字表设置CategoryID,从更新语句当前所在的行传入数字。

类似于:

UPDATE [TelephoneNumberManagement].[dbo].[Number]
SET [CategoryID] = exec goldennumbers2 [Number];

2 个答案:

答案 0 :(得分:8)

没有

如果它是一个函数,你可以这样做:

UPDATE [TelephoneNumberManagement].[dbo].[Number]
SET [CategoryID] = goldennumbers2([Number]);

请记住,功能不能产生副作用。如果您尝试在该过程中运行一堆DML语句,则应该:

  • A)如果您在其他表中具有需要与Number表保持同步的依赖项,请使用触发器。即便如此,你可能想......
  • B)重新思考你的设计。这就像尝试混合基于集合和迭代编程实践一样。几乎可以肯定有更多的解决方案。

答案 1 :(得分:2)

实际上,有一些选项,如用户定义的函数。触发器可能能够做你想要的,取决于你想要做什么以及为什么。

您的goldennumbers2程序究竟做了什么?