之前我们学习过 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;
以上只是对存储过程的一些概念有了基本的了解,特别适合我们上手做一些东西,当然以后会对其有更加详细的介绍大家继续关注哦!