oracle学习笔记-plsql块介绍
一、结构
pl/sql块由三部分组成:定义,执行,例外处理。
定义部分用于定义常量,变量,游标,例外,复杂的数据类型等等。
执行部分用于实现应用模块功能,如pl/sql语句或者是sql语句。
例外部分用于处理执行部分可能出现的错误。
pl/sql块的基本结构如下:
declare
定义部分
begin
执行部分
exception
异常处理部分
end;
注意在declare,begin,exception后面没有;而在end后面却有;
使用sqlplus作几个例子
1、
SQL> set serveroutput on
SQL> begin
2 dbms_output.put_line('hello,oracle');
3 end;
4 /
hello,oracle
PL/SQL 过程已成功完成。
SQL>
dbms_output是oracle系统提供的包,put_line是其中的过程。
2、
SQL> set serveroutput on
SQL> declare
2 v_name varchar2(10);
3 begin
4 select dname into v_name
5 from SCOTT.DEPT
6 where deptno=&no;
7 dbms_output.put_line('部门名称'||v_name);
8 end;
9
10 /
输入 no 的值: 10
原值 6: where deptno=&no;
新值 6: where deptno=10;
部门名称ACCOUNTING
PL/SQL 过程已成功完成。
SQL>
3、
SET serveroutput on
DECLARE
v_name VARCHAR2 (10);
BEGIN
SELECT dname
INTO v_name
FROM scott.dept
WHERE deptno = &no;
DBMS_OUTPUT.put_line ('部门名称' || v_name);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line ('请输入正确的部门名称');
END;
/
输入 no 的值: 78
原值 7: WHERE deptno = &no;
新值 7: WHERE deptno = 78;
请输入正确的部门名称
PL/SQL 过程已成功完成。
输入 no 的值: 10
原值 7: WHERE deptno = &no;
新值 7: WHERE deptno = 10;
部门名称ACCOUNTING
PL/SQL 过程已成功完成。
二、分类
1、匿名块
没有指定名称的pl/sql块.向上面的例子都属于匿名块。
2、命名块
在块的前面加<<>>标记块的名字。
SET serveroutput on
<<dept>>
DECLARE
v_name VARCHAR2 (10);
BEGIN
SELECT dname
INTO v_name
FROM scott.dept
WHERE deptno = &no;
DBMS_OUTPUT.put_line ('部门名称' || v_name);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line ('请输入正确的部门名称');
END;
/
3、子程序
子程序包含过程、函数、触发器和包。
子程序将在下篇文章介绍。