课程十二 编写控制结构语句
本课重点:
1、结构控制的的用途和类型
2、IF 结构
3、构造和标识不同的循环
4、使用逻辑表
5、控制流和嵌套[@more@]课程十二 编写控制结构语句
本课重点:
1、结构控制的的用途和类型
2、IF 结构
3、构造和标识不同的循环
4、使用逻辑表
5、控制流和嵌套
注意:以下实例中标点均为英文半角
一、控制执行流
可以是分支和循环:IF THEN END IF
IF condition THEN
statements;
[ELSIF condition THEN
statements;]
[ELSE
statements;]
END IF;
例子:IF V_ENAME='OSBORNE' THEN
V_MGR:=22;
END IF;
这里我们可以注意,PLSQL和C语言或JAVA在条件上的不同,=代表关系运算,而:=代表赋值。
看一个函数:
create FUNCTION calc_val
(v_start IN NUMBER)
RETURN NUMBER
IS
BEGIN
IF v_start > 100 THEN
RETURN (2 * v_start);
ELSIF v_start >= 50 THEN
RETURN (.5 * v_start);
ELSE
RETURN (.1 * v_start);
END IF;
END calc_val;
现在,虽然我们尚未讲解CREATE 函数或过程,但可以看到IF 条件在其中的作用。
二、注意LOGIC TABLE中的逻辑对应关系
1、NOT、AND、OR
2、任何表达式中含有空值结果都为 NULL
3、连接字符串中含有空值会把NULL作为 EMPTY STRING
declare
v_deptno dept.deptno%type;
v_loc dept.loc%type;
V_FLAG BOOLEAN ;
V_REC BOOLEAN :=FALSE; --此值改为TRUE、NULL、FALSE进行不同的比较
V_AVA BOOLEAN:=NULL;
begin
V_FLAG:=V_REC AND V_AVA;
IF V_FLAG=TRUE THEN
DBMS_OUTPUT.PUT_LINE ('TRUE');
ELSIF V_FLAG=FALSE THEN
DBMS_OUTPUT.PUT_LINE ('FALSE');
ELSE
DBMS_OUTPUT.PUT_LINE ('NULL');
END IF;
end;
/
值得注意的是:NULL AND FALSE ---> FALSE
这是在实践中总结出来的。
三、基本循环基础:
1、LOOP
statement1;
statement2;
. . .
EXIT [WHEN condition];
END LOOP;
v_ord_id s_item.ord_id%TYPE := 101;
v_counter NUMBER (2) := 1;
BEGIN
. . .
LOOP
INSERT INTO s_item (ord_id, item_id)
VALUES (v_ord_id, v_counter);
v_counter := v_counter + 1;
EXIT WHEN v_counter > 10;
END LOOP;
2、FOR循环:
FOR index IN [REVERSE] lower_bound..upper_bound LOOP
statement1;
statement2;
. . .
END LOOP;
实例:DECLARE
V_LOWER NUMBER:=1;
V_UPPER NUMBER:=23;
BEGIN
DBMS_OUTPUT.PUT_LINE('');
FOR I IN V_LOWER..V_UPPER LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
END;
/
3、WHILE 循环:
WHILE condition LOOP
statement1;
statement2;
. . .
END LOOP;
4、循环是可以多层嵌套的。可以用<