我正在尝试将 ColdFusion 查询转换为存储过程。我原来的查询如下
UPDATE Products
SET Active = 1,
Pounds = #lbs#,
Ounces = #ozs#,
Qty = #Qty#,
PrevQty = #GetItem.Qty#,
PrevWMQty = #GetItem.Qty#,
PrevGoogleQty = #GetItem.Qty#,
<cfif Cost NEQ GetItem.OurCost>
PrevOurCost = #GetItem.OurCost#,
</cfif>
OurCost = #Cost#
WHERE ItemID = '#fixedItemID#'
如您所见,我的查询中有 IF 语句,因此如果满足某些条件,它将更新这些字段。如果不满足这些条件,则不会将它们包含在更新中。
所以我想要这样的东西,但我不确定这在存储过程中是否可行
CREATE PROCEDURE [dbo].[spUpdateQty]
AS
BEGIN
SET NOCOUNT ON;
UPDATE Products
SET Active = 1,
Pounds = @var1,
Ounces = @var2,
Qty = @var3,
PrevQty = @var4,
PrevWMQty = @var5,
PrevGoogleQty = @var6,
IF (@var7 >= @var8)
BEGIN
PrevOurCost = @var7,
END
OurCost = @var8
WHERE ItemID = @var9
END
我基本上希望传入可选参数,并根据它们的值更新该字段或不更新该字段。我讨厌必须为每种可能性为每个 IF 语句编写单独的单独查询。那么这甚至可能吗,或者我是否以错误的方式解决这个问题?