`
kevin.wang
  • 浏览: 250985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 调用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"));

}
分享到:
评论

相关推荐

    Java调用oracle函数返回oracle类(类似)集合

    3. **Java调用Oracle函数**: 在Java中,你需要使用Oracle的JDBC驱动(ojdbc.jar和nls_charset12.jar)来与Oracle数据库交互。首先,你需要加载Oracle驱动并建立数据库连接。然后,你可以通过`CallableStatement`来...

    java调用oracle存储过程或者函数

    调用Oracle函数的过程与调用存储过程类似,但创建CallableStatement时的SQL语句略有不同。由于函数会返回一个值,所以格式通常是`{? = call function_name(?, ?, ...)}`。在执行后,通过`CallableStatement....

    Java调用Oracle的过程和函数

    ### Java调用Oracle的过程和函数 在现代软件开发过程中,Java与Oracle数据库的结合非常常见。为了更好地管理和处理数据,通常需要在Java程序中调用Oracle数据库中的存储过程或函数。本文将详细介绍如何通过Java来...

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

    hibernate 调用oracle函数

    4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...

    java中调用oracle的存储过程和函数

    ### Java中调用Oracle的存储过程和函数 在Java应用程序中调用Oracle数据库中的存储过程或函数是一项常见的任务。这不仅能够提高代码的执行效率,还可以有效地管理事务处理,确保数据的一致性和完整性。本文将详细...

    Oracle教程,java调用oracle

    11. **Java调用存储过程和存储函数**:Java开发者可以使用JDBC(Java Database Connectivity)API来调用Oracle的存储过程和函数,实现数据库操作。CallableStatement接口用于这个目的,允许传递参数并接收返回值。 ...

    Java调用Oracle的过程和函数.doc

    以上是Java调用Oracle数据库过程和函数的基本步骤和关键知识点。实际应用中,可能还需要考虑事务管理、性能优化(如批处理)、连接池等高级主题。理解这些概念和操作对于开发高效、可靠的Java数据库应用至关重要。

    Java调用Oracle存储过程的方法

    本文将详细讲解如何使用Java调用Oracle存储过程,并提供示例代码。 首先,我们需要了解Java中用于与数据库交互的核心类,包括`java.sql.Connection`、`java.sql.CallableStatement`和`java.sql.Types`。`Connection...

    Oracle第3章及java调用过程函数.rar

    Java调用过程的几个步骤: 1.创建连接对象 2.得到CallableStatement对象, CallableStatement cst=conn.prepareCall("{call 过程名(?,?... )}"); //每个?代表过程中的一个参数 3.给输入参数赋值 4.注册输出参数,比如...

    java调用Oracle存储过程

    在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将深入探讨如何使用Java与Oracle数据库进行交互,并调用存储过程。 首先,确保你已经在你的开发环境中安装了...

    java调用oracle存储过程

    ### Java调用Oracle存储过程详解 #### 一、概述 在企业级应用开发中,数据库存储过程被广泛用于实现复杂的业务逻辑处理。由于其高效性和安全性,存储过程常常成为首选方案之一。Java作为主流的企业级开发语言之一...

    java调用oracle分页存储过程

    Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...

    JAVA 与ORACLE 存储过程及函数

    对于Oracle函数,由于它会返回一个值,所以在Java中调用时,需要使用`registerOutParameter()`方法先声明返回值的数据类型,然后通过`CallableStatement`的`getXXX()`方法获取返回值。例如,如果函数返回一个整数,...

    java调用oracle sqlserver存储过程共用方法

    ### Java调用Oracle与SQL Server存储过程的通用方法 #### 1. **建立数据库连接** 在Java中,使用JDBC(Java Database Connectivity)来连接数据库。根据`dbType`参数动态选择正确的数据源,即Oracle或SQL Server的...

    oracle 触发器实时调用java 中http接口

    总之,"Oracle触发器实时调用Java中HTTP接口"是一个数据库与应用程序实时通信的示例,涉及Oracle的触发器、存储过程和UTL_HTTP包,以及Java HTTP服务器的设计和实现。这样的设计需要对Oracle PL/SQL和Java网络编程有...

    ibatis调用oracle的函数,存储过程的方法

    在Ibatis中调用Oracle函数和存储过程,你需要以下步骤: 1. **配置映射文件(Mapper XML)**: - 创建一个XML映射文件,定义SQL语句。对于函数,使用`&lt;select&gt;`标签;对于存储过程,使用`&lt;procedure&gt;`标签。 - 在...

    个人亲测oracle触发器调用java程序

    Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...

    hibernate query调用oracle存储过程

    本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和数据库文件。 首先,让我们了解什么是存储过程和函数。存储过程是预编译的SQL语句集合,可以接受参数、...

Global site tag (gtag.js) - Google Analytics