1. PL/SQL流程控制语句之条件控制
If 条件表达式 then
语句段
End if;
If 条件表达式 then
语句段1
Else
语句段2(可嵌套if……then语句)
End if;
If 条件表达式1 then
语句段1
Elseif 条件表达式2 then
语句段2
Elseif 条件表达式3 then
语句段3
Else 语句段4
End if
2. 疑问:在文件中设置相关的环境变量,例如设置日期格式nls_date_format为’yyyy-mm-dd’,设置pagesize为30,设置linesize为120。
begin
dbms_output.put_line(sysdate);
alter session set nls_date_format = 'yyyy-mm-dd';
dbms_output.put_line(sysdate);
show pagesize linesize;
set pagesize 30 linesize 120;
show pagesize linesize;
end;
这样设置之后,发现提示好多问题,比如alter使用方法不对等等。这个文件关于环境变量的设置语句应该怎么写呢?
3. 在SQL*PLUS中使用pl*sql语言的时候,需要进行初始环境设置,比如设置pagesize、linesize、serveroutput、nls_data_format等等
需要在下面的路径下
D:\oracle\product\10.2.0\db_1\sqlplus\admin
的glogin.sql文件中进行修改设置:
Set pagesize 30
Set linesize 120
Set serveroutput on
但是会话的修改不能在glogin.sql文件中进行修改,这个需要单独设置一个文件进行修改会话操作。比如设置一个文件,其中的会话修改语句如下
Alter session set nls_date_format = ‘yyyy-mm-dd’;
4. PL/sql流程控制语句条件控制:case when语句
Case
When 条件表达式1 then
语句段1
When 条件表达式2 then
语句段2
Else
语句段n
End case;
或者
Case 条件表达式
When 条件表达式结果1 then
语句段1
When 条件表达式结果2 then
语句段2
Else
语句段n
End case;
5. PL/sql流程控制语句循环控制:loop……end loop;
<<循环标签>>
Loop
语句段
End loop<<循环标签>>
注:loop循环语句自身没有循环条件测试,即程序一旦进入循环体,只能使用exit语句来结束循环。
Exit循环体语句语法格式:
Exit<<循环标签>> 注:通常需要和条件语句配合使用
Exit<<循环标签>> when 条件表达式 注:只有当条件表达式为true时,才结束循环。
6. PL/sql流程控制语句循环控制:while loop endloop
<<循环标签>>
While 条件表达式 loop
语句段
End loop循环标签
7. PL/sql流程控制语句循环控制:for… loop… end loop
<<循环标签>>
For 循环变量 in [reverse] 初始表达式…终止表达式 loop
语句段
End loop 循环标签
注:不使用reverse则将初始表达式赋值给循环变量,如果使用reverse则将终值表达式赋值给循环变量。
注:循环变量自动加减1,进入下一次循环。直到循环条件为false时结束循环。
注:循环变量可以不在声明部分进行声明,而直接在for循环语句中进行使用,但是系统默认该循环变量的数据类型为整数。
注:当存在与循环变量相同的用户变量的时候,则需要给循环变量添加限定词,例如循环标签和点号。
8. PL/sql循环嵌套
9. PL/sql流程控制语句顺序控制:goto语句
Goto 标签
注:通常用在从一个PL/SQL块中跳转到异常处理语句的前面。Goto语句的目的地必须与goto语句在同一块或更高层次中,即标签必须在goto语句的作用域中,并且通常需要和条件语句配合使用,以免进入死循环。
SQL> get f:\oracle\testgoto.sql;
1 declare
2 v_i number := 0;
3 v_s number := 0;
4 begin
5 <<label_1>>
6 v_i := v_i + 1;
7 if v_i <= 100 then
8 v_s := v_s + v_i;
9 goto label_1;
10 end if;
11 dbms_output.put_line(v_s);
12* end;
10. PL/sql流程控制语句顺序控制:null语句,这是一个可执行语句,但它是不执行任何操作的空语句或站位语句,即它什么操作也不做就将控制交给下一个语句。