Oracle存储过程(有参,无参存储函数实例)

一、存储过程的定义:

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
简而言之,存储过程是是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。一次编译,可多次调用。

二、存储过程的优点:

1、复用性高
存储过程创建编译好后,可调用任意次。
2、执行效率高
完成一项较为复杂的功能,需要多条sql,存储过程可以包含多条sql,且存储过程编译一次后,就会存到数据库,每次调用时都直接执行。而若单独执行大量sql,每次都需要先编译。
3、降低网络流量
存储过程编译好会放在数据库,我们在远程调用时,不会传输大量的字符串类型的sql语句。一个需要数百行的SQL代码的操作由一条执行语句完成。
4、安全性高
完成某个特定功能的存储过程一般只有特定的用户可以使用,具有使用身份限制,更安全。

三、存储过程基本语法:

1、基本语法

CREATE [OR REPLACE] PROCEDURE procedure_name
IS [AS]
声明部分
BEGIN
执行部分
EXCEPTION
异常处理部分
END;
  1. CREATE [OR REPLACE] PROCEDURE procedure_name :
    创建存储过程,若存在则覆盖它。
  2. IS [AS]
    IS关键词表明后面将跟随一个PL/SQL体。
  3. BEGIN关键词表明PL/SQL体的开始。
  4. EXCEPTION
    处理程序异常情况,非必须。
  5. END关键词
    表明PL/SQL体的结束

2、无参存储过程
查询该公司所有员工的员工号及员工姓名

create or replace procedure pro_emp01
is
cursor cur_emp is select e.empno,e.empname from emp_zl e;
begin
  for rec_emp in cur_emp loop
    dbms_output.put_line('员工号:'||rec_emp.empno||'员工名称:'||rec_emp.empname);
  end loop;
EXCEPTION
  when no_data_found then
    dbms_output.put_line('该公司没有一个员工');
end;

调用该存储过程:

begin
  pro_emp01;
end;

输出结果:
在这里插入图片描述
3、带输入、输出参数的存储过程
根据输入的员工号查询员工姓名

create or replace procedure pro_emp02(in_empno in varchar2
                                     ,out_empname out varchar2)
is
begin
  select e.empname into out_empname from emp_zl e where e.empno=in_empno;
EXCEPTION
  when no_data_found then
    dbms_output.put_line('该公司没有这一个员工');
end;

输入员工号
在这里插入图片描述
执行后返回员工姓名
在这里插入图片描述
4、注意事项:

  1. 存储过程参数不带取值范围,in表示传入,out表示输出,类型可以使用任意Oracle中的合法类型
  2. 变量带取值范围,后面接分号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值