在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。PL/SQL的基本单位叫做一个区段,由三个部分组成:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头),模板如下:
declare
/* 声明区(可选):定义类型和变量、声明变量、声明函数、游标 */
begin
/* 执行区(必须的):执行pl/sql语句或者sql语句 */
exception
/* 异常处理区(可选):处理错误的 */
end;
如下所示为一段完整的PL/SQL块:
/*声明部分,以declare开头*/
declare v_id integer;
v_name varchar(20);
cursor c_emp is select * from employee where emp_id=3;
/*执行部分,以begin开头*/
begin open c_emp; //打开游标
loop
fetch c_emp into v_id,v_name; //从游标取数据
exit when c_emp%notfound ;
end loop ;
close c_emp; //关闭游标
dbms_output.PUT_LINE(v_name);
/*异常处理部分,以exception开始*/
exception
when no_data_found then
dbms_output.PUT_LINE('没有数据');
end ;
PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。
1) 条件结构
与其它语言完全类似,语法结构如下:
if condition then
statement1
else
statement2
end if ;
2)循环结构
这一结构与其他语言不太一样,在PL/SQL程序中有三种循环结构:
a. loop … end loop;
b. while condition loop … end loop;
c. for variable in low_bound . .upper_boundloop … end loop;
其中的“…”代表循环体。
3)顺序结构
实际就是goto的运用,不过从程序控制的角度来看,尽量少用goto可以使得程序结构更加的清晰。