Oracle:存储过程

一、基本概念:
什么是存储过程?
事先运用oracle语法写好的一段具有业务逻辑功能的程序片段,长期保存在oracle服务器中,供oracle客户端和程序语言远程访问,类似于java中的函数。
存储过程是PLSQL的一个方面的应用,而PLSQL是存储过程的基础,即存储过程需要用到PLSQL;
但PLSQL每次执行都要整体运行一遍,才有结果;PLSQL不能将其封装起来,长期保存在oracle服务器中;PLSQL不能被其他应用程序调用,例如java。由此,存储过程应运而生。
二、创建存储过程:
语法:create [or replace] Procedure 过程名[(参数列表)]
          as
          PLSQL程序体;【begin...end;】无declare

例:创建无参存储过程hello,无返回值
create or replace procedure hello
as
begin
dbms_out put_line('aaaaa');
end;
/
三、删除存储过程:
语法:drop procedure 过程名

四、调用:
方式一:语法:exec 存储过程名,【适合于过程无返回值】,例:exec hello
方式二:PLSQL程序,例:begin
                                         hello;
                                         end;
                                         /
方式三:java程序。

例:创建有参存储过程reiseSalary(编号),为7369号员工涨工资10%
create or replace procedure reiseSalary(pempno in number)
as
begin
  update emp set sal=sal*1.2 where empno=pempno;
end;
--调用
exec reiseSalary(7369);
注意:in关键字是默认的,可以不写,表示从外界接收参数。
例:创建有参存储过程findEmpNameAndSalJob(编号),查询7788号员工的姓名、职位、月薪、返回多个值
create or replace procedure findEmpNameAndSalJob(pempno in number,pename out varchar2,pjob out varchar2,psal out number)
as
begin
select ename,job,sal,into pename,pjob,psal
from emp
where pepno=pempno;
end;
/
注意:若变量是要输出值,必须写out
--调用
declare
pename emp.ename%type;
pjob emp.job%type;
psal emp.sal%type;
begin
findEmpNameAndSalJob(7788,pename,pjob,psal)
debms.output.put_line('7788'||pename);
end;
/

猜你喜欢

转载自blog.csdn.net/weixin_41113108/article/details/80353227
今日推荐