首页 > 其他 > 详细

05 存储过程、存储函数与包

时间:2020-03-29 21:04:23      阅读:72      评论:0      收藏:0      [点我收藏+]

存储过程用于执行特定的操作,完成某个功能,可以有输入参数in和输出参数out。存储函数用于返回特定的结果,在函数的头部使用return子句,指定返回的类型,在执行部分使用return子句来返回结果。包用于组织存储过程、函数等,包分为两部分:包说明、包体。

1、系统、软件和约束条件

  • win10
  • oracle11g
  • sql developer

2、存储过程操作

  • 1 编写一个存储过程,向表中添加数据
# 创建存储过程,没有参数
create or replace procedure pro_demo1 
is
begin
  insert into emp(empno,ename,sal) values (88,‘wanhe‘,2000);
end;
# 调用存储过程
exec pro_demo1();  --exec是sqlplus命令
或者
call  pro_demo1(); --call是sql命令
  • 2 编写一个存储过程,通过输入雇员名和工资来更新雇员工资信息
#创建存储过程,有两个入参
create or replace procedure pro_demo2 (name varchar2,newSalary number)
as
begin
  update emp set sal=newSalary where ename=name;
end;
# 调用存储过程
exec pro_demo2(‘SCOTT‘,9000);
  • 3 编写一个存储过程,通过入参的员工编号返回员工姓名到出参
# 有入参,有出参
create or replace procedure pro_demo3 (no in emp.empno%type,username out emp.ename%type)
is 
begin
  select ename into username from emp where empno=no;
end;
# 在块中调用这样的存储过程
declare
  v_no emp.empno%type;
  v_ename emp.ename%type;
begin
  v_no:=&empno;
  pro_demo3(v_no,v_ename);
  dbms_output.put_line(‘雇员姓名:‘||v_ename);
end;

3、存储函数操作

  • 1 创建一个存储函数给入参加10,返回结果
# 给入参加10,返回结果
create or replace function fun_demo1(num number) return number
is
  v_num number(10);
begin
  v_num:=num+10;
  return v_num;
end;  
# 在块中调用存储函数
declare
  v_num number(10);
begin
  v_num:=fun_demo1(25);
  dbms_output.put_line(‘函数返回值为:‘||v_num);
end;

4、包操作

# 创建一个包,只有声明没有实现
create or replace package pac_demo1
is
  procedure pro_demo8(name emp.ename%type,newSal in number);
  function fun_demo8(name varchar2) return number;
end; 
# 创建包体,完成实现
create or replace package body pac_demo1
is
  procedure pro_demo8 (name emp.ename%type,newSal in number)
  is
  begin
    update emp set sal=newSal where ename=name;
  end;
  function fun_demo8 (name varchar2) return number
  is
    v_sal emp.sal%type;
  begin
    select sal into v_sal from emp where ename=name;
    return v_sal;
  end;
end;
# 调用
exec pac_demo1.pro_demo8(‘SCOTT‘,1111);
select pac_demo1.fun_demo8(‘SCOTT‘) from dual;

以上就是oracle当中的存储过程、存储函数以及它们组成的包。

05 存储过程、存储函数与包

原文:https://www.cnblogs.com/alichengxuyuan/p/12576994.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!