Oracle存储过程

1、作用

    a、在开发中,为了一个特定的业务功能,会向数据库进行多次连接关闭(连接和关闭是很耗资源),需要对数据库进行多次I/O读写,性能比较低。如果把这些业务放入

  存储过程中,就可以做到连接关闭一次数据库就可以实现业务,可以大大的提高效率。

    b、Oracle官方建议,能够让数据库操作的不要放在程序中,在数据库中实现基本上不会出现错误,在程序中操作可能会存在错误。(如果在数据库中操作,可以有一定

  的日志恢复功能。)

2、语法

  CREATE OR REPLACE PROCEDURE 存储过程名称[(参数列表)] IS

  BEGIN

  END 存储过程名称;

 

  根据参数的类型,可以分为3类

  a、不带参数

  b、带输入参数

  c、带输入输出参数(返回值)

3、无参存储

create or replace procedure p_hello as
--声明变量
begin
    dbms_output.put_line('Hello World!');
end p_hello ;
View Code

 

调用 在plsql中可以直接在begin end中直接写存储过程名,或者在命令窗口中执行 exec 存储过程名;。

  注意:

    a、is和as是可以相互用的

    b、过程中没有declare关键字,declare用在语句块中

4、带输入参数存储

create or replace procedure p_queryName(i_empno in emp.empno%type) as
--声明变量
v_name emp.ename%type;
v_sal emp.sal%type;
begin
    --查询emp表中对应员工的信息
    select ename,sal into v_name,v_sal from emp where empno=i_empno;
    dbms_output.put_line('名称:'||v_name||'薪水:'||v_sal);
end p_queryName;
View Code

5、带输入输出参数存储

create or replace procedure p_querySalOut(i_empno in emp.empno%type,o_sal out emp.sal%type) as
--声明变量
begin
    --查询emp表中对应员工的信息
    select sal into o_sal from emp where empno=i_empno;
    dbms_output.put_line('名称:'||v_name||'薪水:'||v_sal);
end p_querySalOut;
View Code

 调用

declare
--声明变量接受存储过程中的输出参数
    v_sal emp.sal%type;
begin
    p_querySalOut(7839,v_sal);
    dbms_output.put_line(v_sal);
end;
View Code

 

  

posted on 2019-10-07 13:53  lovezj9012  阅读(230)  评论(0编辑  收藏  举报

导航