Oracle创建简单报表姓名工资,Oracle之PL/SQL学习笔记之存储过程(六)

Oracle之PL/SQL学习笔记之存储过程(六)

1. 认识存储过程

存储过程是Oracle开发者在数据转换或查询报表时最经常使用的方式之一。

1. 1. 什么是存储过程

存储过程就是存储在数据库服务器中的一段封装的一段或多端SQL语句的PL/SQL代码块。

1.2 存储过程的作用

存储过程编写相对比较复杂,但很多单位或个人都在使用它。显然这不是因为存储过程编写简单,而是因为它一系列的有点:

简化复杂的操作。存储过程可以把需要执行的多条SQL与复杂的业务逻辑封装到一个独立的单元中。

增加数据的独立性 。 利用存储过程可以把数据库基础数据和程序(或用户)隔离开来。

提高安全性(存储过程的权限设置,SQL执行的错误几率)

提高性能(一次编译)如果是普通的SQL每次都需要编译

1.3 存储过程的语法

语法格式:

create [or replace] procedure [schema.] procedure_name

[([parameter_name [in|out] datatype,[parameter_name [in|out] datatype]])] --参数列表in,out 数据类型不能有长度限制 可选操作(可以没有参数)

[v_name varchar2(50)] -- 声明部分,声明变量,数据类型加长度限制

{is|as} --关键字

begin

--执行部分

[exception]--例外(异常)

end;

2. 存储过程的实例

2.1无参数的存储过程

实例1: 输出Hello PL/SQL

create or replace procedure helloPLSQL

is

begin

dbms_output.put_line('Hello PL/SQL');

end;

2.2 有参数的存储过程

实例2: 根据员工编号,更新员工工资

create or replace procedure update_empSal(

eNo number--员工编号

,eSal number--新工资

)

is

begin

update emp set sal=eSal where empno=eNo;--跟新操作

commit;--提交事务

end;

2.3 带例外处理的存储过程

案例3: 根据员工编号,查找员工,输出员工姓名,可能该员工不存在。

create or replace procedure selByEmpNo_pro(

eNo number--员工编号

)

is

v_ename emp.ename%type;

begin

select ename into v_ename from emp where empno=eNo;

dbms_output.put_line('雇员编号为:'||eNo||'的雇员名称为:'||v_ename);

exception

when no_data_found then

dbms_output.put_line('雇员编号为:'||eNo||'的雇员不存在');

when too_many_rows then

dbms_output.put_line('雇员编号为:'||eNo||'的雇员太多');

end;

2.4 存储过程与函数的区别

Oracle中的函数与存储过程的区别:

A:函数必须有返回值,而过程没有.

B:函数可以单独执行.而过程必须通过execute执行.

C:函数可以嵌入到SQL语句中执行.而过程不行.

其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数.

Oracle中的函数与存储过程的特点:

A. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

B.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

C.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

2.5 存储过程的优点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值