我的应用程序中有一些规则,并且我已经在我的程序中编写了这些规则的业务逻辑。在创建过程时,我开始知道该CASE
表达式在我的场景中不起作用。所以我尝试了两种方法来执行相同的操作(使用IF-ELSE-IF
or GOTO
),如下所示。
方法 1 使用 IF-ELSE-IF 条件:
DECLARE @V_RuleId SMALLINT;
IF (@V_RuleId = 1)
BEGIN
/*My business logic*/
END
ELSE IF (@V_RuleId = 2)
BEGIN
/*My business logic*/
END
ELSE IF (@V_RuleId = 3)
BEGIN
/*My business logic*/
END
/*
...
...
...
...*/
ELSE IF (@V_RuleId = 19)
BEGIN
/*My business logic*/
END
ELSE IF (@V_RuleId = 20)
BEGIN
/*My business logic*/
END
方法 2 使用 GOTO 语句:
DECLARE @V_RuleId SMALLINT, @V_Temp VARCHAR(100);
SET @V_Temp = 'GOTO RULE' + CONVERT(VARCHAR, @V_RuleId);
EXECUTE sp_executesql @V_Temp;
RULE1:
BEGIN
/*My business logic*/
END
RULE2:
BEGIN
/*My business logic*/
END
RULE3:
BEGIN
/*My business logic*/
END
/*
...
...
...
...*/
RULE19:
BEGIN
/*My business logic*/
END
RULE20:
BEGIN
/*My business logic*/
END
今天我有20条规则。以后可以增加到任意数量。如果我可以使用 CASE 表达式,那么我的性能没有任何问题,但我不能这样做,所以我担心我的程序的性能。
还有一点需要注意的是,此过程将由应用程序非常频繁地执行。
我的问题是:
有没有办法在我的程序中使用 CASE 表达式?如果不是,在我的程序中最好使用哪种方法来提高我的代码的性能?