0

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

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

这就是我想做的事情背后的想法。我希望能够采用特定的 CorporationID guid 并为他们更改设置,但为其他所有人保留默认设置。

这是我到目前为止所拥有的,但我对 tsql 还不够熟悉,无法完成它:

DELETE FROM [Truck].[GpsReading] WHERE [DateTimeOfReading] <= DATEADD(DAY, -14, GetDate()) and PNRef IS NULL

那是删除部分,但我不确定如何进行 if 检查。

我确实看到了微软的“else if else”文章。当我想在存储过程开始之前指定 CorporationId 时,我无法弄清楚它是如何在这里发挥作用的。

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

4

1 回答 1

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

于 2013-09-27T15:56:57.290 回答