orcale 之 存储过程

  之前我们学习过 PL/SQL, 那么当我们的工作中我们通过 PL/SQL 做很多的事情,那么有一个问题,在每次的座同样一件事的时候是不是都需要重新通过 PL/SQL 去完成呢?可不可以只写一次然后,在以后需要的时候调用它呢?答案当然是肯定的了。我们把这个东西就叫做存储过程(PROCEDURE)。

创建

  创建存储过程的语法如下:

CREATE [OR REPLACE] PROCEDURE <过程名>
    (<参数1>, [方式1] <数据类型1>,
     <参数2>, [方式2] <数据类型2>       
    ......
    )
IS|AS
PL/SQL 主体部分;

  例如查看 emp 表中用户的个数:

create or replace procedure test_count
is
v_total number(2);
begin
  select count(*) into v_total from emp;
  DBMS_OUTPUT.put_line('总人数:'||v_total);
end;

调用

  调用存储过程的命令是 EXECUTE。执行上面我们创建的存储过程查看 emp 表员工的数量。

EXECUTE test_count();

删除

  当不需要的时候可以将其删除:

DROP PROCEDURE <name>;

--删除刚才创建的存储过程
DROP PRODECURE test_count;

存储过程中类型参数的传递

  1. in 类型

    这是一个输入类型,表示将这个参数输入给存储过程。

create or replace procedure double(in_num in NUMBER, out_num out NUMBER) is
begin
  out_num:=in_num * 2;
end double;

  2. out 类型

    这是一个输出类型,意思就是这个参数在存储过程中被赋值,最后将其传递出去。

  3. in out 类型

    这个类型就是上面提到两种类型的综合版本。

create or replace procedure double2(in_out_num in out NUMBER) is
begin
  in_out_num:=in_out_num * 2;
end double2;

  以上只是对存储过程的一些概念有了基本的了解,特别适合我们上手做一些东西,当然以后会对其有更加详细的介绍大家继续关注哦!

原文地址:https://www.cnblogs.com/brother-four/p/6486732.html