《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;当调用包的过程或是函数时,在过程和函数前需要带有包名。
代码如下:
call sp_package.p_insert('aabbcc'); 如图所示:
代码如下:
var res varchar2(10);--定义变量call sp_package.f_select('aabbcc') into:res;--调用包中函数,并将返回值赋值print res;--打印结果如图所示:
其实调用包中的存储过程以及函数,只是在原先调用存储过程以及函数中加上包名。
Oracle jar包csdn下载地址:http://download.csdn.net/download/abrazen_zz/9749345
代码如下:
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();//执行代码如下:
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);新闻热点
疑难解答