当前位置:首页 > 开发 > 数据库 > 正文

Oracle中的子程序和包

发表于: 2015-04-19   作者:357029540   来源:转载   浏览:
摘要: 在Oracle中通过使用子程序和包将PL/SQL代码封装起来,从而实现模块化,在以后的调用中可以多次复用,而不受前台语言的限制,同时通过用子程序和包将PL/SQL代码封装起来,有利于提高开发效率和执行效率,但是维护性却没有面向对象灵活,如果一个子程序受到影响,就需要修改该子程序的定义。        在Oracle中子程序分为过程和
在Oracle中通过使用子程序和包将PL/SQL代码封装起来,从而实现模块化,在以后的调用中可以多次复用,而不受前台语言的限制,同时通过用子程序和包将PL/SQL代码封装起来,有利于提高开发效率和执行效率,但是维护性却没有面向对象灵活,如果一个子程序受到影响,就需要修改该子程序的定义。

       在Oracle中子程序分为过程和函数,过程适用的场合是处理需要修改数据的业务,如有insert、delete、update、commit、rollback和有异常的地方;而函数适合于处理只是计算,而不必改变数据的场合,它通过返回值返回计算结果,它可以直接用在sql语句和jdbc中。过程的定义方法如下:

create or replace procedure add_emp(
p_ename emp.ename%type,
p_sal emp.sal%type,
p_hiredate varchar2, --不能写长度
p_empno out emp.empno%type
)
as
begin
  insert into emp(empno,ename,sal,hiredate)
values(seq1.nextval,p_ename,p_sal,to_date(p_hiredate,'yyyy-mm-dd'))
  returning empno into p_empno;
  commit;

end;

而调用方式与使用jdbc基本相同,不同点就是

String sql = "{ call del_emp(?) }";
  CallableStatement call =conn.prepareCall(sql);

方式调用函数。

函数创建方式:

create or replace function add_sal(
p_sal1 number,
p_sal2 number)
return number

as
  v_sal emp.sal%type;
begin
  v_sal:=p_sal1+p_sal2;
  return v_sal;
end;

     在Oracle中包适用于当过程和函数需要分类管理时使用,不同的包相当于不同的容器,先定义包规范,然后再包中实现包规范,包的定义方法如下:

--定义包规范
create or replace package mybao
is
  procedure hello(v1 varchar2);
  function double_num(v1 number)returnnumber;
end;

--然后在包体中实现
create or replace package body mybao
is
  procedure hello(v1 varchar2)
  as
  begin
    dbms_output.put_line('hello');
  end;

  function double_num(v1 number)returnnumber
  as
  begin
    returnv1*2;
  end;
end;

Oracle中的子程序和包

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
连接:[url] http://blog.sina.com.cn/s/blog_3ccffbdf01015orr.html[/url] E:\>mvn install:inst
游标: 1、cursor_name%ROWCOUNT 表示游标影响了多少行,如:sql%rowcount中的sql是oracle的内部游
1、子程序的定义 如果某程序段在源程序内反复出现,那么,就可把该程序段定义为子程序。这样可以缩
create or replace package body cuttoship_lots is procedure prod_run(p_w_day date) as begin de
pl/sql包的例子 包分为包头和包体 以存储过程为例,包头中定义存储过程,包体中实现存储过程。 如上
一. 用途介绍 dbms_xplan包用于展示执行计划。执行计划存储在计划表中,库缓存中和AWR中,dbms_xpla
先直接上个最终效果图: 为了能让VS的部署环境知道你的自定义子程序,你需要在C:\Program Files\Mic
转自博客园吉桂昕的博客 http://www.cnblogs.com/jiguixin/archive/2011/09/27/2192986.html 感谢原
<style type="text/css"> /* banner */ #banner { position:static; top: 0px; left: 0px; wid
<style type="text/css"> /* banner */ #banner { position:static; top: 0px; left: 0px; wid
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号