创建存储过程并需要按公司ID清除

时间:2013-09-27 15:39:15

标签: sql-server-2008 tsql stored-procedures

我需要创建一个执行以下操作的存储过程:

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时,我无法弄清楚如何在这里播放。

有没有办法以我想要的方式去做?

1 个答案:

答案 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更多。