PL/SQL块分类
来源:互联网 发布:人丑还颜控 知乎 编辑:程序博客网 时间:2024/05/21 07:47
PL/SQL块分类
1.匿名块
declare
v_avgsal number(6,2);
begin
selectavg(sal)into v_avgsalfrom emp
where deptno=&no;
dbms_output.put_line('平均工资:'||v_avgsal);
end;
2.命名块
<<outer>>
declare
v_deptno number(2);
v_dname varchar2(10);
begin
<<inner>>
begin
select deptnointo v_deptnofrom emp
wherelower(ename)=lower('&name');
end;--<<inner>>
select dnameinto v_dnamefrom dept
where deptno=v_deptno;
dbms_output.put_line('部门名:'||v_dname);
end;--<<outer>>
3.子程序(子程序包括过程、函数和包)
(1)过程
过程用于执行特定操作。当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)。
createprocedure update_sal(newnamevarchar2,newsalnumber)
is
begin
update empset sal=newsal
wherelower(ename)=lower(newname);
end;
调用该过程时,可以使用execute命令或call命令。示例如下:
execute update_sal('scott',2000)
call update_sal('scott',2000)
(2)函数
函数用于返回特定数据。当建立函数时,在函数头部必须包含return子句,而在函数体内必须包含return语句的返回数据。
createfunction annual_income(newnamevarchar2)
returnnumberis
annual_salary number(7,2);
begin
select sal*12+nvl(comm,0)into annual_salary
from empwherelower(ename)=lower(newname);
return annual_salary;
end;
调用
var income number
call annual_income('scott')into :income
print income
(3)包
包用于逻辑组合相关的过程和函数,它由包规范和包体两部分组成。包规范用于定义公用的常量、变量、过程和函数。
createpackage emp_pkgis
procedure update_sal(newnamevarchar2,newsalnumber);
function annual_income(newnamevarchar2);
end;
createpackagebody emp_pkgis
procedure update_sal(newnamevarchar2,newsalnumber)
is
begin
update empset sal=newsal
wherelower(ename)=lower(newname);
end;
function annual_income(newnamevarchar2)
returnnumberis
annual_salary number(7,2);
begin
select sal*12+nvl(comm,0)into annual_salary
from empwherelower(ename)=lower(newname);
return annual_salary;
end;
end;
当调用包的过程和函数时(包名.子程序名)
execute emp_pkg.update_sal('scott',2000)
4.触发器
触发器是隐含执行的存储过程。当定义触发器时,必须要指定触发器事件以及触发操作,常用的触发事件包括insert,update和delete语句,而触发操作实际是一个PL/SQL块。
createtrigger update_cascade
afterupdateof deptnoon dept
foreachrow
begin
update empset deptno=:new.deptno
where deptno=:old.deptno;
end;
- PL/SQL块分类
- PL/SQL块分类(匿名块、命名块、子程序、触发器)
- PL/SQL块结构
- PL/SQL程序块
- 典型pl/sql块
- PL/SQL 块简介
- PL/SQL块结构
- Oracle pl/sql块
- PL/SQL块 基础
- pl/sql代码块
- PL/SQL块
- pl/sql 块 实例
- PL/SQL 程序块
- PL/SQL块结构
- Oracle PL/SQL块
- PL/SQL 块
- PL/SQL块结构
- 五、pl/sql块
- windows phone 8 开发学习笔记(二)
- Handler、Loop和MessageQueue
- IOS程序启动的过程
- 学习之路3----ResultSet可滚动和可更新的结果集
- Java 文件操作
- PL/SQL块分类
- 大话设计模式——外观模式(C++顾客抵押系统)
- login 登录页面(别小看这个页面在公司很有讲究的!昨天晚上熬夜写的)
- PAT1010. 一元多项式求导
- MySQL数据库最大连接数
- 定义并使用变量
- Placement New的使用的完整总结版
- QT4 初学者软件安装和配置
- uip UDP 服务器广播模式(客户端可以任意端口,并且主动向客户端发送数据)