现实生活中会出现一些情况,当我们需要做出一些决定时,我们会根据这些决定来决定下一步应该做什么。类似的情况也出现在编程中,我们需要做出一些决定,并根据这些决定我们将执行下一个代码块。
编程语言中的决策语句决定了程序执行流程的方向。 pl/SQL 中可用的决策语句有:
- 如果那么语句
- if then else 语句
- 嵌套的 if-then 语句
- if-then-elsif-then-else 阶梯
- 如果那么语句
if then语句是最简单的决策语句。它用于决定是否执行某个语句或语句块,即如果某个条件为真,则执行语句块,否则不执行。句法:
if condition then -- do something end if;
在这里,评估后的条件将是真或假。 if 语句接受布尔值——如果值为真,那么它将执行它下面的语句块,否则不执行。
if 和 endif 在这里视为一个块。例子:-
declare -- declare the values here begin if condition then dbms_output.put_line('output'); end if; dbms_output.put_line('output2'); end;
-- pl/sql program to illustrate If statement declare num1 number:= 10; num2 number:= 20; begin if num1 > num2 then dbms_output.put_line('num1 small'); end if; dbms_output.put_line('I am Not in if'); end;
因为 if 语句中存在的条件为假。因此,不会执行 if 语句下方的块。
输出:I am Not in if
- 如果 – 那么 – 否则:
单独的 if 语句告诉我们,如果条件为真,它将执行语句块,如果条件为假,则不会执行。但是,如果条件为假,我们想做其他事情怎么办。下面是 else 语句。当条件为假时,我们可以使用 else 语句和 if 语句来执行代码块。
句法:-if (condition) then -- Executes this block if -- condition is true else -- Executes this block if -- condition is false
例子:-
-- pl/sql program to illustrate If else statement declare num1 number:= 10; num2 number:= 20; begin if num1 < num2 then dbms_output.put_line('i am in if block'); ELSE dbms_output.put_line('i am in else Block'); end if; dbms_output.put_line('i am not in if or else Block'); end;
输出:-
i'm in if Block i'm not in if and not in else Block
在调用不在块中的语句(没有空格)后,当 if 语句中存在的条件为假时,将执行 else 语句后面的代码块。
- 嵌套如果然后:
嵌套的 if-then 是一个 if 语句,它是另一个 if 语句的目标。嵌套的 if-then 语句意味着在另一个 if 语句中的 if 语句。是的,PL/SQL 允许我们在 if-then 语句中嵌套 if 语句。即,我们可以将一个 if then 语句放在另一个 if then 语句中。句法:-
if (condition1) then -- Executes when condition1 is true if (condition2) then -- Executes when condition2 is true end if; end if;
-- pl/sql program to illustrate nested If statement declare num1 number:= 10; num2 number:= 20; num3 number:= 20; begin if num1 < num2 then dbms_output.put_line('num1 small num2'); if num1 < num3 then dbms_output.put_line('num1 small num3 also'); end if; end if; dbms_output.put_line('after end if'); end;
输出:-
num1 small num2 num1 small num3 also after end if
- if-then-elsif-then-else 阶梯
在这里,用户可以在多个选项中做出决定。 if then 语句从上到下执行。一旦控制 if 的条件之一为真,则执行与该 if 相关的语句,并绕过梯形图的其余部分。如果没有一个条件为真,则将执行最后的 else 语句。句法:-
if (condition) then --statement elsif (condition) then --statement . . else --statement endif
流程图:-
例子:-
-- pl/sql program to illustrate if-then-elif-then-else ladder declare num1 number:= 10; num2 number:= 20; begin if num1 < num2 then dbms_output.put_line('num1 small'); ELSIF num1 = num2 then dbms_output.put_line('both equal'); ELSE dbms_output.put_line('num2 greater'); end if; dbms_output.put_line('after end if'); end;
输出:-
num1 small after end if