PL/SQL编程
PL/SQL是oracle的专用语言,它对标准的SQL语言的扩展.SQL语句可以嵌套在PL/SQL语言中,并结合处理语句。
PL/SQL程序结构
使用了程序块的结构组织的代码.最简单的程序块是一种被称为”匿名块”的程序块,匿名块是指不会被oracle存储并且不能够重用程序块。
PL/SQL程序通常包括3部分:Declare部分、exception部分、Begin和end部分.
Begin和end是PL/SQL的必须部分,总是begin开始end结束.
Declare部分包含定义变量、常量和游标等类型的代码.
Begin与end之间可以嵌套begin与end及exception.
//打开服务器的输出
SQL> set serveroutput on;
SQL> begin //开始
2 dbms_output.put_line('Hello World');
3 end;
4 /
//声明一个整型的变量
SQL> declare
2 age number(2);
3 begin
4 age:=90;
5 dbms_output.put_line(age);
6 end;
7 /
//声明后直接赋值
SQL> declare
2 age number(2) :=90;
3 begin
4 dbms_output.put_line(age);
5 end;
6 /
//捕获异常处理
SQL> declare
2 age number(2);
3 begin
4 age :='qwe'
5 ;
6 exception
7 when others then
8 dbms_output.put_line('赋值失败');
9 end;
10 /
条件判断语句
有if与case语句
If语句
If语法
If(expression1)then pl/sql_statement
Else
Pl/sql_statement;
End if;
If(expression1)then pl/sql_statement
Else if(expression2)
Pl/sql_statement;
Else
Pl/sql_statement;
End if;
Case语句
从oracle9i以后引入
Case <selector>
When <expression1> then pl/sql_statement1;
When <expression2> then pl/sql_statement2;
…….
[else pl/sql_statement;]
End;
//案例
SQL> declare score number(2) :=80;
begin
if score>70 then dbms_output.put_line('成绩合格');
end if;
end;
/
SQL> declare score number(2) :=80;
begin if score>90 then dbms_output.put_line('成绩合格');
else dbms_output.put_line('成绩不合格');
end if;
end;
/
成绩不合格
SQL> declare score number(2):=8;
begin
case score
when 9 then dbms_output.put_line('成绩优秀');
when 8 then dbms_output.put_line('成绩亮');
end case;
end;
/
循环语句
最基本的循环称为无条件循环,如果没有指定exit语句,循环将无条件执行,这种循环称为死循环,死循环尽量避免。
语法格式如下:
Loop
---statement---
Exit when condition
End loop;
案例:
SQL> declare
i number(2):=1;
begin
loop
dbms_output.put_line(i);
i:=i+1;
exit when i>10;
end loop;
end;
/
While循环
语法:
While condition
Loop
Statement;
End loop;
SQL> declare
i number(2):=1;
begin
while i<10
loop dbms_output.put_line(i);
i:=i+1;
end loop;
end;
/
For循环
For loop_control_variable in [reverse] lower upper loop
Statement;
End loop;
SQL> begin
for i in 1..10
loop
dbms_output.put_line(i);
end loop;
end;
/