oracle存储过程

在学习存储过程之前,建议先去了解,掌握PLSQL编程:https://blog.csdn.net/hexu_blog/article/details/103991799

一. 什么是存储过程?

  在第一篇我们编写的PLSQL程序可以进行表的操作,判断,循环逻辑处理的工作,但无法重复调用.

  可以理解之前的代码全部编写在了main方法中,是匿名程序,JAVA可以通过封装对象和方法来解决复用问题

  PLSQL是将一个个PLSQL的业务处理过程存储起来进行重复调用,这些被存储起来的PLSQL程序称为存储过程

二 . 作用?

     1 .在开发程序中,为了一个特定的业务功能,会向数据库进行多次连接关闭(连接和关闭是很消耗资源),需要对数据库进行多次I/O读写,性能比较低,如果把这些业务放到PLSQL中,在应用程序中只需要调用PLSQL就可以做到连接关闭一次数据库就可以实现我们的业务,可以大大提高效率。

     2 .ORACLE官方给的建议,能够让数据库操作的不要放在程序中。在数据库中实现基本上不会出现错误,在程序中操作可能存在错误。

 

三. 语法

   create or replace procedure 过程名称 [参数列表] IS

   begin

   end [过程名称];


1. 不带参数的, end后可以加上存储过程名称,也可以不加

--创建无参存储过程
create or replace procedure proc_print is
begin
  dbms_output.put_line('hello,存储过程');
end proc_print ;


--调用存储过程,通过PLSQL方式调用
begin
  proc_print;
end;

--通过exec调用,如果没有打印出结果,先执行打开输出开关: set serveroutput on
exec proc_print;

2 .带输入参数

  --查询某个员工并打印名字,薪水
  create or replace procedure proc_printNo(i_empno in emp.deptno%TYPE) as
  --声明变量接收查询的数据
  v_name emp.ename%TYPE;
  v_sal  emp.sal%TYPE;
begin
  select ename, sal into v_name, v_sal from emp where empno= i_empno;
  --打印
  dbms_output.put_line('名字:' || v_name || ',薪水:' || v_sal);
end;


  --调用方式1
exec proc_printno(7369);

--调用方式2
declare
deptno number :=7369;
begin
   proc_printNo(deptno);
end;

既有输入参数,也有输出参数

--查询员工基本信息,并输出薪水
create or replace procedure proc_emp_out_sal(i_empno in emp.empno%TYPE,o_sal out emp.sal%type) is
begin
  select sal into o_sal from emp where empno=i_empno;
end;


--调用, 如果没有打印出结果,先执行打开输出开关: set serveroutput on
declare
  sal emp.sal%TYPE;
  empno number :=7369;
begin
   proc_emp_out_sal(empno,sal);
   --打印输出的内容
   dbms_output.put_line(sal);
end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hexu_blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值