`
hunter090730
  • 浏览: 191447 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle 常用基本函数

阅读更多

Oracle的存储过程和函数区别 1、都可以使用out参数返回多个值,一般原则是有多个返回值使用过程;如果只有一个返回值,使用函数 2、过程调用本身就是一条pl/sql语句,而函数只能作为表达式的一部分进行调用以获得user_objects表的object_name为例,由于只返回一个字段,所以使用Oracle函数,第一种方式返回标量数据类型,第二种方式返回游标类型。标量只包含一个值,而游标可以代表一个查询结果集。 一、返回标量的函数 1、在Oracle中定义函数 create function getObjectsName(obj_type varchar2) return varchar2 is o_name user_objects.OBJECT_NAME%type; o_names long; cursor objs_cursor(o_type varchar2) is select object_name from user_objects where object_type=o_type and rownum<11; begin open objs_cursor(obj_type); --打开游标 loop fetch objs_cursor into o_name; o_names:=o_names || '_' ||o_name;--使用一个变量合并所有值 exit when objs_cursor%NOTFOUND ; end loop; close objs_cursor; return o_names; end; 2、在java中调用 String function= "{?=call getObjectsName(?)}";//比调用存储过程多了一部分:“?=” cstmt = conn.prepareCall(function); //注册返回类型(或out类型)参数 cstmt.registerOutParameter(1, Oracle.jdbc.OracleTypes.VARCHAR); //注册传入(in类型)参数 cstmt.setString(2, "TABLE"); cstmt.execute(); //从输出参数中获取值 String values = cstmt.getString(1); System.out.println(values); 二、返回游标类型 首先定义返回类的类型,以便函数返回,有一些类型可以直接create定义,如嵌套表、varray,但是有一些类型不可以使用create,如索引表、游标,如果想返回不可create的类型,可以先创建package,再创建想返回的类型,如: 1、创建包规范 create or replace package yulee is type objNames_cur is ref cursor;--创建想返回的类型,以便function返回 function getObjNames(objType varchar2)return objNames_cur ; end yulee; 2、创建包体 create or replace package body yulee is function getObjNames(objType varchar2) return objNames_cur is objNames objNames_cur; begin OPEN objNames FOR select object_name from user_objects where object_type=objType and rownum<11; return objNames; close objNames;--不可以在return前关闭,否则java获得无效的游标 end getObjNames; end yulee; 3、java程序调用 String procedure = "{?=call yulee.getObjNames(?)}"; cstmt = conn.prepareCall(procedure); //注册返回参数 cstmt.registerOutParameter(1, Oracle.jdbc.OracleTypes.CURSOR); //传入参数 cstmt.setString(2, "TABLE"); cstmt.execute(); //打印返回值 rs = (ResultSet)cstmt.getObject(1); while(rs.next()){ System.out.println(rs.getString("object_name")); }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics