嵌套 IF 在 PL/SQL
NESTED IF's in PL/SQL
我正在尝试在 pl/sql 块中编写嵌套的 IF。怎么安排才合适。
IF r1.CABLE_TYPE = "A" THEN
var_root = FC_CPSCBPR1.C_111_SCPSCBP
我现在必须包含逻辑
If var_root is "TRUE" /*If the value is populated*/
THEN
IF ...
THEN
Elsif var_root is "FALSE" /*If the value is not found*/
THEN
查看 this example 了解嵌套的 IF 语句。
每个都需要一个 END IF
来结束。
DECLARE
PROCEDURE p (
sales NUMBER,
quota NUMBER,
emp_id NUMBER
)
IS
bonus NUMBER := 0;
BEGIN
IF sales > (quota + 200) THEN
bonus := (sales - quota)/4;
IF whatever_else_you_like THEN
do_something_here;
END if;
ELSE
IF sales > quota THEN
bonus := 50;
ELSE
bonus := 0;
END IF;
END IF;
DBMS_OUTPUT.PUT_LINE('bonus = ' || bonus);
UPDATE employees
SET salary = salary + bonus
WHERE employee_id = emp_id;
END p;
BEGIN
p(10100, 10000, 120);
p(10500, 10000, 121);
p(9500, 10000, 122);
END;
/
您还可以根据需要创建任意数量的 ELSIF 语句。例如。
DECLARE
PROCEDURE p (sales NUMBER)
IS
bonus NUMBER := 0;
BEGIN
IF sales > 50000 THEN
bonus := 1500;
ELSIF sales > 35000 THEN
bonus := 500;
ELSE
bonus := 100;
END IF;
DBMS_OUTPUT.PUT_LINE (
'Sales = ' || sales || ', bonus = ' || bonus || '.'
);
END p;
BEGIN
p(55000);
p(40000);
p(30000);
END;
/
看看这个 PL/SQL 块结构示例 - 您需要记住使用 END IF
和分号 [=13= 将每个 IF
语句作为一个封闭的代码块结束].
BEGIN
IF 10 > 5 THEN
IF 10 < 20 THEN
dbms_output.put_line('statement 1 from nested if');
ELSE
dbms_output.put_line('statement 2 from nested if');
END IF;
ELSE
dbms_output.put_line('statement not from nested if');
END IF;
END;
我正在尝试在 pl/sql 块中编写嵌套的 IF。怎么安排才合适。
IF r1.CABLE_TYPE = "A" THEN
var_root = FC_CPSCBPR1.C_111_SCPSCBP
我现在必须包含逻辑
If var_root is "TRUE" /*If the value is populated*/
THEN
IF ...
THEN
Elsif var_root is "FALSE" /*If the value is not found*/
THEN
查看 this example 了解嵌套的 IF 语句。
每个都需要一个 END IF
来结束。
DECLARE PROCEDURE p ( sales NUMBER, quota NUMBER, emp_id NUMBER ) IS bonus NUMBER := 0; BEGIN IF sales > (quota + 200) THEN bonus := (sales - quota)/4; IF whatever_else_you_like THEN do_something_here; END if; ELSE IF sales > quota THEN bonus := 50; ELSE bonus := 0; END IF; END IF; DBMS_OUTPUT.PUT_LINE('bonus = ' || bonus); UPDATE employees SET salary = salary + bonus WHERE employee_id = emp_id; END p; BEGIN p(10100, 10000, 120); p(10500, 10000, 121); p(9500, 10000, 122); END; /
您还可以根据需要创建任意数量的 ELSIF 语句。例如。
DECLARE
PROCEDURE p (sales NUMBER)
IS
bonus NUMBER := 0;
BEGIN
IF sales > 50000 THEN
bonus := 1500;
ELSIF sales > 35000 THEN
bonus := 500;
ELSE
bonus := 100;
END IF;
DBMS_OUTPUT.PUT_LINE (
'Sales = ' || sales || ', bonus = ' || bonus || '.'
);
END p;
BEGIN
p(55000);
p(40000);
p(30000);
END;
/
看看这个 PL/SQL 块结构示例 - 您需要记住使用 END IF
和分号 [=13= 将每个 IF
语句作为一个封闭的代码块结束].
BEGIN
IF 10 > 5 THEN
IF 10 < 20 THEN
dbms_output.put_line('statement 1 from nested if');
ELSE
dbms_output.put_line('statement 2 from nested if');
END IF;
ELSE
dbms_output.put_line('statement not from nested if');
END IF;
END;