1.PL/SQL块结构
Declare
/*
* 定义部分--定义常量,变量,复杂数据类型,游标,例解
*/
Begin
/*
* 执行部分--PL/SQL语句和SQL语句
*/
Exception
/*
*异常处理或例外处理部分--处理运行出现的错误
*/
End;/*块结束标记*/
其中定义部分以Declare开始,该部分是可选的;执行部分以begin开始,该部分是必须的;例外处理部分以exception开始,该部分是可选的;而End则是PL/SQL块的结束标记,要注意的是Declare,begin,exception后面没有分号,而end后必须加分号。
2.PL/SQL块分类
包含四类:匿名块,命名块,子程序,触发器
a.匿名块
指没有名称的PL/SQL块,匿名块既可以内嵌到应用程序中,也可以在交互式环境中直接使用。
For Eg.
declare
v_avgsal number(6,2)
begin
select avg(sal) into v_avgsal from emp
where deptno=&no;
dbms_output.put_line('平均工资:'||v_avgsal);
End;
输入的值为:10
平均工资:2222.00
b.命名块
指具有特定名称标识的PL/SQL块,命名块与匿名块非常类似,只不过在PL/SQL块前使用<<>>加以标记,当使用嵌套块时,为了区分多级嵌套层次关系,可以使用命名块加以区分。
For Eg.
<<outer>>
declare
v_deptno number(2);
v_dname varchar2(10);
begin
<<inner>>
begin
select deptno into v_deptno from emp
where lower(ename)=lower('&name');
End;--<<inner>>
select dname into v_dname from dept
where deptno=v_deptno;
dbms_output.put_line('部门名:'||v_dname);
end;--<<outer>>
c.子程序
包含过程,函数,包。当开发PL/SQL子程序时,既可以开发客户端的子程序,也可以开发服务器端的子程序。客户端子程序主要用在Developer中,而服务器子程序可以用在任何应用程序中。通过将商业逻辑和企业规则集成到PL/SQL子程序中,可以简化客户端程序的开发和维护,并且提高应用程序的性能。
包中可以包含函数和过程 For Eg:
d.触发器
触发器是指隐含执行的存储过程。当定义触发器时,必须要制定触发时间以及触发操作,常用的出发时间包括INSERT,UPDATE和DELETE语句,而触发操作实际是一个PL/SQL块。在SQL*PLUS中建立触发器是使用CREATE TRIGGER 命令来完成的。
For Eg.