我需要创建一个执行以下操作的存储过程:
if CorporationId = xxxxx-xxxx-xxxxx-xxxx-xxxxx then
clear transactions from x days back
if CorporationId = yyyyy-yyyy-yyyyy-yyyy-yyyyy then
clear transactions from x days back
else
clear transactions from x days back
end if
这就是我想要做的事情背后的想法。我希望能够获取特定的公司ID guid,并为他们更改他们的设置,但为其他人留下默认值。
这是我到目前为止所做的,但我对tsql不够熟悉,无法完成它:
DELETE FROM [Truck].[GpsReading] WHERE [DateTimeOfReading] <= DATEADD(DAY, -14, GetDate()) and PNRef IS NULL
这是删除部分,但我不知道如何进行if检查。
我确实看到了Microsoft "else if else"文章。当我想在存储过程开始之前指定CorporationId时,我无法弄清楚如何在这里播放。
有没有办法以我想要的方式去做?
答案 0 :(得分:0)
“X天回来”来自哪里?你有设置表吗? 假设您有一个设置表,您可以执行类似
的操作DECLARE @daysBack int = 0
SELECT @daysBack = PeriodToClear from settings where CorporationId = @CorporationId
DELETE FROM [Truck].[GpsReading] WHERE [DateTimeOfReading] <= DATEADD(DAY, @daysBack, GetDate()) and PNRef IS NULL
AND CorporationId = @CorporationId
@CorporationId是您传递到商店过程的参数
对我来说最后一次检查是有道理的,从它的外观来看,你在同一张桌子上的数据比那个特定的CorporationId更多。