一、控制结构
1.比较运算符
1>.AND
BEGIN
IF 1=1 AND 2=2 THEN
DBMS_OUTPUT.PUT_LINE('TRUE');
END IF;
END
2>.BETWEEN(包含边界)
BEGIN
IF 1 BETWEEN 1 AND 3 THEN
DBMS_OUTPUT.PUT_LINE('IN THE RANGE');
END IF;
END;
3>IN
BEGIN
IF 1 IN (1,2,3) THEN
DBMS_OUTPUT.PUT_LINE('IN THE SET');
END IF;
END;
4>IS EMPTY
检查VARRAY或NESTED TABLE集合变量是否为空,
只对使用标量SQL数据类型的集合起作用
DECLARE
TYPE list IS TABLE OF INTEGER
a LIST := list();
BEGIN
IF a IS EMPTY THEN
DBMS_OUTPUT.PUT_LINE('"a" is empty');
END IF;
END;
5>IS NULL
DECLARE
var BOOLEAN;
BEGIN
IF var IS NULL THEN
DBMS_OUTPUT.PUT_LINE('IT IS NULL');
END IF;
END;
6>IS A SET
检查某个变量是否为VARRAY或NESTED TABLE集合变量,
如果变量数据类型是VARRAY或NESTED TABLE集合变量并且该变量已经构造,返回TRUE。
已构造意味着已经创建了不带成员或带有成员的集合实例,
只对使用标量SQL数据类型的集合起作用
DECLARE
TYPE list IS TABLE OF INTEGER;
a LIST := list();
BEGIN
IF a IS A SET THEN
DBMS_OUTPUT.PUT_LINE('"a" IS A SET');
END IF;
END;
7>LIKE
下划线是单字符通配符,%是多字符通配符
BEGIN
IF 'string' LIKE 'str%' THEN
DBMS_OUTPUT.PUT_LINE('MATCH');
END IF;
END;
8>MEMBER OF
检查某个元素是否是集合的成员,
只对标量SQL数据类型的集合起作用。
集合中存在此元素,返回TRUE,否则,返回FALSE
如果左操作数为NULL,就返回FALSE,这意味着应该总是在使用该运算符之前检查值
DECLARE
TYPE list IS TABLE OF VARCHAR2(10);
n VARCHAR2(10) := 'ONE';
a LIST := list('ONE','TWE','THREE');
BEGIN
IF n MEMBER OF a THEN
DBMS_OUTPUT.PUT_LINE('"n" IS MEMBER');
END IF;
END;
9>NOT
如果表达式或值为NULL,NOT运算符就不做改变,此时IF NULL 后面的代码不执行
BEGIN
IF NOT FALSE THEN
DBMS_OUTPUT.PUT_LINE('TRUE');
END IF;
END;
10> OR
BEGIN
IF 1=1 OR 1=2 THEN
DBMS_OUTPUT.PUT_LINE('TRUE');
END IF;
END;
11>SUBMULTISET
检查右值是否包含左值
DECLARE
TYPE list IS TABLE OF INTEGER;
a LIST := list(1,2,3);
b LIST := list(1,2,3,4);
BEGIN
IF a SUBMULTISET b THEN
DBMS_OUTPUT.PUT_LINE('SUBSET');
END IF;
END;
二、运算符
1 ** 指数
2 +,- 正 负
3 *,/ 乘除
4 +,-,|| 加,减,串联
5 =,<,>,<=,>=,<>,!=,~=,^=,between,in,is null,like 比较
6 NOT 逻辑非
7 AND 逻辑与
8 OR 逻辑或