我有一个以下的存储过程。我有变量@PercentCleared
。任何其他方式,以避免如果条件
IF @PercentCleared <= 70
然后我必须减去PercentCleared-10
否则就这样使用。你可以请教我正确的做法吗?
DECLARE @PercentCleared INT
DECLARE @TenPercent int
SET @TenPercent = 10
IF(@PercentCleared <=70)
BEGIN
SELECT
@I, dbo.tblV.VegTypeCode, dbo.tblV.VegTypeName
FROM
dbo.tblVegetationType
INNER JOIN
dbo.tblVegFormationLink ON dbo.tblV.VegTypeID = dbo.tblVegFormationLink.VegTypeID
WHERE
dbo.tblVegetationType.PercentageCleared >=(@PercentCleared - @TenPercent)
WHERE
a.VegTypeID = dbo.tblVegetationType.VegTypeID
AND dbo.tblVegetationType.VegTypeID <> (SELECT VegTypeID
FROM @EcosystemCredits eco
WHERE eco.theID = @I)
END
ELSE IF
BEGIN
SELECT
@I, dbo.tblV.VegTypeCode, dbo.tblV.VegTypeName
FROM
dbo.tblVegetationType
INNER JOIN
dbo.tblVegFormationLink ON dbo.tblV.VegTypeID = dbo.tblVegFormationLink.VegTypeID
WHERE
dbo.tblVegetationType.PercentageCleared >[email protected]
WHERE
a.VegTypeID = dbo.tblVegetationType.VegTypeID
AND dbo.tblVegetationType.VegTypeID <> (SELECT VegTypeID
FROM @EcosystemCredits eco WHERE eco.theID = @I)
End
这很难读。你可以重新格式化更清晰吗? (我很抱歉,但我没有能力为你做这件事。)@ TenPercent这个名字并不是一个很好的选择。要么写10或者给它一个更有意义的名字。 – 2014-12-05 00:20:11
对不起乔纳森,我现在正在格式化 – Usher 2014-12-05 00:23:05
'else if'是否只是'其他'? 'else if'的'if'部分没有条件。虽然这是琐事。其余的更容易阅读。你不能在SELECT语句之一中使用'CASE @PercentCleared WHEN> = 70 THEN @PercentCleared - @TenPercent ELSE @PercentCleared END'来代替'@ PercentCleared'条件,所以你不需要其他或外部IF/ELSE。 – 2014-12-05 00:33:31