AI智能
改变未来

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


一、存储过程的定义:

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

二、存储过程的优点:

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

三、存储过程基本语法:

1、基本语法

CREATE [OR REPLACE] PROCEDURE procedure_nameIS [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_emp01iscursor cur_emp is select e.empno,e.empname from emp_zl e;beginfor rec_emp in cur_emp loopdbms_output.put_line(\'员工号:\'||rec_emp.empno||\'员工名称:\'||rec_emp.empname);end loop;EXCEPTIONwhen no_data_found thendbms_output.put_line(\'该公司没有一个员工\');end;

调用该存储过程:

beginpro_emp01;end;

输出结果:

3、带输入、输出参数的存储过程
根据输入的员工号查询员工姓名

create or replace procedure pro_emp02(in_empno in varchar2,out_empname out varchar2)isbeginselect e.empname into out_empname from emp_zl e where e.empno=in_empno;EXCEPTIONwhen no_data_found thendbms_output.put_line(\'该公司没有这一个员工\');end;

输入员工号

执行后返回员工姓名

4、注意事项:

  1. 存储过程参数不带取值范围,in表示传入,out表示输出,类型可以使用任意Oracle中的合法类型
  2. 变量带取值范围,后面接分号。
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Oracle存储过程(有参,无参存储函数实例)