如何在SqlServer中的Update命令之前在更新过程内设置变量?

时间:2014-07-05 18:34:59

标签: sql-server variables set procedure

我正在创建一个计算固定资产折旧折旧的程序。 为此,我需要在过程内部基于CASE设置一个值,而CASE又基于我在Update命令中使用的表中的值。 在更新Table之前,我需要知道如何设置该变量。 问题看起来像这样:

Create procedure Depreciation
as begin
declare @k numeric (10,2) 
set @k=case 
when Value From a table inside the FROM(UPDATE)>1 then 2
else 3
end
update Deprectiation Table set (Deprectiation=@k*Value)
From Tables
where conditions 

谢谢。

2 个答案:

答案 0 :(得分:0)

这是一个错误的语法。你可以做类似下面的事情(虽然你发布的代码根本不清楚,不确定你想要实现的目标)

Create procedure Depreciation
as 
begin
declare @k numeric (10,2); 
declare @value numeric (10,2); 
select @value = [Value], @k = case when [Value] > 1 then 2 else 3 end 
From table1 ;

update Deprectiation set Deprectiation=@k*@value where conditions;
end

答案 1 :(得分:0)

试试这个:

Create Procedure Description
AS Begin
    Update DeprectiationTable 
    SET Deprectiation=CASE WHEN Value>1 THEN 2 ELSE 3 END * Value
    From Tables
    Where conditions 
End