我有一个存储过程,其中包含硬编码值(CASE statement
)。现在这些硬编码值已存储在不同的表中,因此我希望从表中检索它们,而不是在存储过程中对它们进行硬编码。
换句话说,我想替换CASE
中的值并从表中检索它们。我不知道怎么回事。
这是包含值的表。
编辑:表格中的值通常会发生变化。 (例如:假设我将other_value从25更改为35)。执行时,我希望存储过程从表中动态检索(当前是硬编码的值)。 (例如:值25将在存储过程中替换为35,因为它将在执行时动态更改)。我没有将10,25,30作为直接在存储过程中硬编码的值,而是用变量(?)替换它们,这些变量将包含我对这些值的表的当前内容。
CREATE PROCEDURE [dbo].[sp_Update_Proc]
AS
BEGIN
Update dbo.MyTable
set Nb1=0, Nb2=0, Nb3= b.TotalAmount, MaxValue =
CASE WHEN b.TotalAmount < 10 THEN 25
WHEN b.TotalAmount >= 10 and b.TotalAmount < 20 THEN 50
WHEN b.TotalAmount >= 20 and b.TotalAmount < 30 THEN 100
END
From dbo.Client_stuff cmta
INNER Join otherTable b
ON b.someValue=cmta.someValue
where yesInd=1
END
答案 0 :(得分:0)
我认为您正在寻找的是将参数传递给存储过程。我只能用你提供的东西来推测这一点。 以下是:
CREATE PROCEDURE [dbo].[sp_Update_Proc] @int1 int , @int2 int
AS
BEGIN
Update dbo.MyTable
set Nb1=0, Nb2=0, Nb3= b.TotalAmount, MaxValue =
CASE WHEN b.TotalAmount < @int1 THEN 25
WHEN b.TotalAmount >= @int1 and b.TotalAmount < @int2 THEN 50
WHEN b.TotalAmount >= @int2 and b.TotalAmount < 30 THEN 100
END
From dbo.Client_stuff cmta
INNER Join otherTable b
ON b.someValue=cmta.someValue
where yesInd=1
END