ORACLE PL/SQL实例精解笔记(一)

2014-11-24 12:55:25 · 作者: · 浏览: 0

1. &与&&的区别:
一个&的意思 是每次碰到这个变量,都问问你是啥
两个&,那么只问你一次,以后这个变量都按这个值处理
2.声明常量
eg: declare testConstant CONSTANT NUMBER :=300
begin
end;
3. IF语句
IF CONDITION1 THEN
STATEMENT 1;
ELSIF CONDITION2 THEN
STATEMENT2;
ELSIF CONDITION3 THEN
STATEMENT3;
ELSE
STATEMENT4;
END IF;
4.CASE语句
a.CASE
CASE selector
WHEN EXPRESSION 1 THEN STATEMENT 1;
WHEN EXPRESSION 2 THEN STATEMENT 2;
...
WHEN EXPRESSION N THEN STATEMENT N;
ELSE STATEMENT N+1;
END CASE;
eg:
case v_num_flg
when 0 then
dbms_output.put_line('.........');
else
dbms_output.put_line('......');
end case;
b.搜索式CASE语句
CASE
WHEN SEARCH CONDITION 1 THEN STATEMENT1;
WHEN SEARCH CONDITION 2 THEN STATEMENT2;
WHEN SEARCH CONDITION 3 THEN STATEMENT3;
..........
ELSE
STATEMENT N+1;
END CASE;
c.CASE表达式:与CASE语句的差别是:END CASE改为END即可
5.NULLIF与COALESCE
NULLIF(expression1,expression2):如果expression1等于expression2,则NULLIF返回NULL。如果expression1不等于expression2,NULLIF函数返回expression1;
NULLIF函数存在一个限制:不能把字面值NULL赋予expression1.
nvl()将空值转换为指定的值nvl(exp1,exp2),第一个为null,取第二个
nvl2()将空值转换为指定的值nvl2(exp1,exp2,exp3) ,第一个为null,取第二个,第二个也为null,取第三个
COALESCE(expression1,expression2,.....,expressionN)

6.迭代控制--------LOOP
a. LOOP(方式一:通过EXIT语句)
LOOP
STATEMENT1;
STATEMENT2;
IF CONDITION THEN

EXIT;
END IF;
END LOOP;
b.LOOP(方式二:通过EXIT WHEN 语句)
LOOP
STATEMENT 1;
STATEMENT 2;
EXIT WHEN CONDITION;
END LOOP;
7.迭代控制--------WHILE
a.普通WHILE语句
WHILE CONDITION LOOP
STATEMENT1;
STATEMENT2;
...
STATEMENTN;
END LOOP;
b.含EXIT的while语句
WHILE TEST_CONDITION LOOP
STATEMENT1;
STATEMENT2;

IF EXIT_CONDITION THEN
EXIT;
END IF;
END LOOP;
c.含EXIT WHEN的WHILE语句
WHILE TEST_CONDITION LOOP
STATEMENT1;
STATEMENT2;

EXIT WHEN EXIT_CONDITION;
END LOOP;
8.迭代控制------数值型FOR循环
其中:REVERSE为从大到小,默认为从小到大,另: loop_counter不能被其他语句使用,它只在循环时作为一个计数器
a. 普通的数值型for循环
FOR loop_counter IN [REVERSE] lower_limit..upper_limit LOOP
STATEMENT1;
...
STATEMENTN;
END LOOP;
b.含EXIT语句的数值型for循环
FOR loop_counter IN [REVERSE] lower_limit..upper_limit LOOP
STATEMENT1;
STATEMENT2;
IF EXIT_CONDITION THEN
EXIT;
END IF;
END LOOP;
c.含EXIT语句的数值型for循环
FOR loop_counter IN [REVERSE] lower_limit..upper_limit LOOP
STATEMENT1;