我想设置一个值,然后在同一个SQL更新存储过程中引用那个新值,这会有用吗?
当我尝试时,似乎第二次更新直到第二次运行存储过程才更新(如果第一行更新不会使新值对第二个字段可见)
如果这不起作用,最好的选择是使用变量吗?
我有以下命令(简体):
UPDATE [dbo].[AU Sales Inv Line] SET
[_On Rent Date] = "REALLY COMPLICATED CALCULATION",
[_New Revenue] = (CASE WHEN [_On Rent Date] = XXX THEN 'Yes' ELSE 'No' END)
提前致谢
答案 0 :(得分:1)
执行所需操作的简单方法是可更新的CTE:
with toupdate as (
select t.*,
<really complicated calculation> as newval
from [AU Sales Inv Line] t
)
update toupdate
set [_On Rent Date] = newval,
[_New Revenue] = (CASE WHEN newval = XXX THEN 'Yes' ELSE 'No' END);