我的任务是更新存储过程,我正在尝试找出执行选择的最有效方法。以下是当前代码,vaultID
和clientID
是输入参数:
SELECT
@siteID = Site.siteID,
@siteGroupID = Site.siteGroupID,
@customerID = Customer.customerID
FROM
Customer
INNER JOIN
Site ON Customer.siteID = Site.siteID
WHERE
Site.phoneNumberIVR = @vaultID
AND Site.production = 1
AND Customer.clientID = @clientID
我正在处理的更新与@clientID
变量有关。如果记录具有特定@siteGroupID
,则clientID
需要在收到时传入。如果记录具有不同类型的@siteGroupID
,则@clientID
变量需要附加特定前缀。该前缀也将存储在站点表中。
我意识到我最初可以调用站点表来获取前缀,然后修改@clientID
变量,但我试图弄清楚是否有办法只用一个呼叫。我一直在尝试不同的案例陈述,但我不确定这是否可行。
答案 0 :(得分:1)
如果我能正确理解您的问题,那么您应该可以在CASE
中根据自己的条件提出SELECT
进行追加:
SELECT
@siteID = Site.siteID,
@siteGroupID = Site.siteGroupID,
@customerID = Customer.customerID,
@clientID =
CASE
WHEN Site.siteGroupID = 1234 THEN Site.Prefix + @clientID
ELSE @clientID
END
FROM
Customer
inner join Site on Customer.siteID = Site.siteID
WHERE
Site.phoneNumberIVR = @vaultID
and Site.production = 1
and Customer.clientID = @clientID
当然,根据@clientID
和Site.Prefix
的数据类型,您可能需要执行除简单+
之外的其他操作才能执行追加操作。例如,如果两者都是integer
数据类型,则可以追加一些CONVERT
次调用:
@clientID = CONVERT(integer, CONVERT(varchar, Site.Prefix) + CONVERT(varchar, @clientID))