Oracle:存储过程

存储过程

什么是存储过程【procedure】

事先运用oracle语法,写好的一段具有业务功能的程序片段,长期保存在oracle服务器中,供oracle客户端(sqlplus)和程序语言远程访问,类似于Java的函数。

为什么要用存储过程?

(1)PLSQL每次执行都要整体运行一遍,才有结果

(2)PLSQL不能将其封装起来,长期保存在oracle服务器中

(3)PLSQL不能被其它应用程序调用,例如:Java

存储过程与PLSQL是什么关系?

存储过程是PLSQL的一个方面的应用,而PLSQL是存储过程的基础。即存储过程需要用到PLSQL。

过程和函数的作用

创建存储过程语法:
create [or replace] procedure 过程名  [(参数列表)]
as --声明
;
begin --执行
;
exception --存储过程异常
;
end;
/

 

--创建无参存储过程
create or replace procedure hello
as
begin
    dbms_output.put_line('这是我的第一个存储过程');
end;
/
调用存储过程:

--如果是命令窗口就用exec 存储过程名,举个栗子:
exec hello;

--如果是PL/SQL窗口就用 begin  存储过程名  end; 举个栗子:
begin
  hello;
end;
/

--如果是程序中调用就用 call 存储过程名 ,举个栗子:
call hello();
删除存储过程hello,语法:drop procedure 过程名
drop procedure hello;

 

--创建带参存储过程
create or replace procedure queryempname(sfindno emp.empno%type)  
as 
    sName emp.ename%type; 
    sjob emp.job%type; 
begin 
    ...
exception 
    ...
end;
/
--创建带参存储过程含赋值方法
IN表示参数赋值,是参数的默认模式,可以不写
OUT表示返回值参数,类型可以使用任意Oracle中的合法类型,OUT模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程。
IN OUT表示该参数可以向该过程中传递值,也可以将某个值传出去。

--创建有参存储过程raiseSalary(编号),为7369号员工涨10%的工资,演示in的用法
--定义过程
create or replace procedure raiseSalary(pempno in numeber)
as
begin
    update emp set sal=sal*1.2 where empno = pempno;
end;
/
--调用过程
exec raiseSalary(7369);

--创建有参存储过程findEmpNameAndSalAndJob(编号),查询7788号员工的的姓名,职位,月薪,返回多个值,演示out的用法
--定义过程
create or replace procedure findEmpNameAndSalAndJob(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 empno = 7788;
end;
/
--调用过程
declare
    pename emp.ename%type;
    pjob emp.job%type;
    psal emp.sal%type;
begin
    findEmpNameAndSalAndJob(7788,pename,pjob,psal);
    dbms_output.put_line('7788号员工'||pename||'————'||pjob||'————'||psal);
end;
/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值