一、pl/sql块结构
1.语法:
declare --声明
variables,cursors,user-defined exceptions
begin --执行部分
sql statements
pl/sql statements
exception --异常处理部分
actions to perform when errors occur
end;
2.对各语句块的说明:
(1)一个基本pl/sql块由三部分组成:定义部分、可执行部分以及例外处理部分
(2)定义部分:定义将在可执行部分中调用的所有变量、常量、游标和用户自定义的例外处理。这部分可以没有
可执行部分:包括对数据库中进行操作的sql语句,以及对块中进行组织、控制的pl/sql语句。这部分必须存在
异常处理部分:对可执行部分中语句,在执行过程中出错或出现非正常现象时所做的相应处理。这部分可以没有
3.pl/sql块中的标识符定义要求和限制有:
标识符名不能超过30字符
第一个字符必须为字母
不分大小写
不能用-(减号)
不能是sql保留字
注:一般不要把变量名声明与表中字段名弄得完全一样,如果这样可能得到不正确的结果
4.pl/sql块说明:
pl/sql块中可以包含子块
子块可以位于pl/sql中的任何部分
子块即pl/sql中的一条命令
5.举例:
现在sqlplus中设置
--显示存储过程输出
set serveroutput on
--取消显示变量替换时的提示信息
set verify off
--只有执行部分的pl/sql块
begin
dbms_output.put_line('Hello,Oracle');
end;
--只有声明部分和执行部分的pl/sql块
declare
v_name varchar2(10);
begin
select dname into v_name from dept
where deptno=&dno;
dbms_output.put_line('部门名称' || v_name);
end;
--带有声明部分、执行部分和异常处理部分的pl/sql块
declare
v_name varchar2(10);
begin
select dname into v_name from dept
where deptno=&dno;
dbms_output.put_line('部门名称' || v_name);
exception
when no_data_found then
dbms_output.put_line('请输入正确的部门编号');
end;
二、pl/sql块的类型
Anonymous
[declare]
begin
--statements
[exception]
end;
Procedure
procedure name is
begin
--statements
[exception]
end;
Function
function name return datatype
is
begin
--statements
return value;
[exception]
end;