PL/SQL是对SQL的扩展,其作为块发送,减少通信次数而且能根据条件能决定执行或重复执行什么语句。
PL/SQL块是一种块结构语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每个块可因分为三部分:
1,声明部分,由关键字DECLARE开始,包含常量和变量的数据类型和初始值,如不声明变量和常量则可以省略
2,执行部分,由BEGIN开始,指令放在其中,被嵌套的PL/SQL块也放在其中
3,异常处理部分,这一部分用于处理异常由EXCEPTION开始,这是可选部分
PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以多行,但分号表示该语句的结束,一行中有多个SQL语句,之间以分号间隔,每一个PL/SQL块由BEGIN或DECLARE开始,以END 结束,注释由:--,/*...*/. 以及 //标识
PL/SQL程序块可以是一个命名程序块也可以是一个匿名的程序块,匿名块用在服务器或客户端
执行部分包含了所有的语句和表达式,以BEGIN开始,EXCEPTION结束,如果EXCEPTION不存在,则以END结束,分号分隔每一条语句,用赋值操作 := 或SELECT INTO 或 FETCH INTO 给每个变量赋值
PL/SQL块不能在屏幕上显示SELECT语句的输出,SELECT语句必须包括一个INTO 子串口或者是游标的一部分,执行部分用的变量常量必须在声明部分声明可执行部分必须至少包括一条可执行语句,NULL是一条合法的可运行语句,事务控制语句可在执行部分使用,数据定义语言不能在执行部分中使用,DDL语句与EXCUTE IMMEDIATE 一起使用或者是DBMS_SQL调用。
SQL*PLUS 中匿名块的执行是在PL/SQL块后输入 / 来进行的,例如:
DECLARE
i_percent CONSTANT number := 10;
BEGIN
UPDATE emp
SET comm = sal * i_percent
where deptno = 10;
end
/
命名的程序与匿名的程序的执行不同,执行命名的程序块必须使用“execute关键字”,例如:
CREATE OR REPLACE PROCEDURE update_emp
(v-dept in number, v-pervent in number default 10 ) is
BEGIN
UPDATE emp
SET COMM = SAL * v-percent
where deptno = v-dept;
end
SQL>/
procedure created
SQL> EXECUTE update-emp(10,15);
如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要‘EXECUTE’关键字了,例如:
DECLARE
v-dept number;
BEGIN
SELECT a.deptno
INTO v_dept
FROM emp a
WHERE job = 'president'
UPDATE-EMP (v-dept);
end
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16683570/viewspace-578349/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16683570/viewspace-578349/