首页 > 学院 > 开发设计 > 正文

Oracle之包

2019-11-09 13:28:08
字体:
来源:转载
供稿:网友

Oracle(持续更新中)

《Oracle11g之安装与卸载》 《Oracle之常用命令》 《Oracle之用户管理》 《Oracle之pl/sql》 《Oracle之块》 《Oracle之存储过程》 《Oracle之函数》 《Oracle之包》


包用于在逻辑上组合存储过程和函数,它由包和包体两部分组成。

包:只包含了过程和函数的说明,但是没有过程和函数的实现代码,类似于java中的接口。

包体:用于实现包规范中的过程和函数,类似于java中接口的实现。

创建包

  可以使用create package 命令来创建包。

  代码如下:

create or replace package sp_package is PRocedure p_insert(in_info varchar2);--定义p_insert存储过程 function f_select(in_info varchar2) return varchar2;--定义f_select函数end;

显示数据库中所有包

  –user_objects表为数据库中保存所有对象

  代码如下:

select object_name from user_objectswhere object_type='PACKAGE';

  如图显示:

这里写图片描述

创建包体

  可以使用create package body 命令创建包体。

  代码如下:

create or replace package body sp_package is--创建包体procedure p_insert(in_info varchar2) is--实现p_insert存储过程 begin insert into data (info) values (in_info);--在data表中插入 end;function f_select(in_info varchar2)--实现f_select函数return varchar2 is out_info varchar2(20); begin select info into out_info from data where info =in_info;--查询data表 return out_info;--必须携带返回值 end;end;

在命令窗口中调用包

  当调用包的过程或是函数时,在过程和函数前需要带有包名。

  (1)调用包中存储过程

  代码如下:

call sp_package.p_insert('aabbcc');

  如图所示: 这里写图片描述

  (2)调用包中函数

  代码如下:

var res varchar2(10);--定义变量call sp_package.f_select('aabbcc') into:res;--调用包中函数,并将返回值赋值print res;--打印结果

  如图所示:

这里写图片描述

java中调用包

  其实调用包中的存储过程以及函数,只是在原先调用存储过程以及函数中加上包名。

  Oracle jar包csdn下载地址:http://download.csdn.net/download/abrazen_zz/9749345

  (1)调用包中存储过程

  代码如下:

Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");//获得连接 CallableStatement cstm = conn.prepareCall("{call sp_package.p_insert(?)}");//连接对应的存储过程,指明包名 cstm.setString(1, "ccnn");//设置插入数据,1代表上述中第1个? cstm.execute();//执行

  (2)调用包中函数

  代码如下:

Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");//获得连接 CallableStatement cstm = conn.prepareCall("{?=call sp_package.f_select(?)}");//连接对应的存储过程 cstm.registerOutParameter(1, oracle.jdbc.OracleTypes.VARCHAR); //设置返回类型 cstm.setString(2, "ccnn");//设置数据,2对应第二个? cstm.execute();//执行 String result = cstm.getString(1);//得到返回数据 System.out.println("执行结果:"+result);
上一篇:文章标题

下一篇:安装MySQL参考资料

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表