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

调用带有Out返回值的Oracle存储过程

阅读更多
在EJB 3.0中,传统的调用Oracle带Out返回值的存储过程是不被允许的。在项目中计算业务遇到了需要调用以上形式的存储过程,经过苦恼-纠结-痛苦直至变通。通过EntityManager获取到Hibernate的Session,再通过Session获取到Connection然后进行余下操作。

@Override
	public Map executeToCollectPersonnel(Long formId, Long periodId,
			String areaCode) {
		Map<String, String> result = new HashMap<String, String>();
		Session session = (Session) this.em.getDelegate();
		Connection conn = session.connection();
		try {
			CallableStatement call = conn
					.prepareCall("{CALL COLLECT_PERSONNEL(?,?,?,?)}");
			call.setLong(1, formId);
			call.setLong(2, periodId);
			call.setString(3, areaCode);
			call.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR);
			call.execute();

			String str = call.getString(4);
			for(String temp : str.split(",")){
				result.put(temp.split("#")[1], temp.split("#")[0]);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return result;
	}
分享到:
评论

相关推荐

    VB 调用oracle 带返回值的存储过程

    当使用VB与Oracle进行交互时,有时候我们需要调用Oracle中的存储过程,尤其是那些带有返回值的存储过程。下面将详细介绍如何在VB中实现这一操作。 首先,为了在VB中与Oracle数据库通信,我们需要引入Oracle的数据...

    java调用存储过程(含out参数)

    本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的概念。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可以接受输入参数、输出参数,甚至同时具有...

    oracle 存储过程 函数 dblink

    ### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...

    oracle存储过程编写

    Oracle存储过程是数据库管理系统中的一种重要程序设计组件,它允许用户在数据库中执行复杂的操作序列,而不仅仅局限于简单的SQL查询。在Oracle中,存储过程是由一个或多个SQL语句和PL/SQL块组成的,可以被封装起来并...

    oracle存储过程

    - **类型**:包括简单存储过程(只包含SQL语句)、带有参数的存储过程、带有游标的存储过程、带有异常处理的存储过程、带有返回值的存储过程等。 2. 创建存储过程: 使用`CREATE OR REPLACE PROCEDURE`语句来创建...

    oracle存储过程实例

    存储过程可以带有参数,分为输入参数(IN)、输出参数(OUT)和输入输出参数(IN OUT)。调用存储过程通常使用`CALL`语句,但某些情况下(如只有输出参数的情况),需要在PL/SQL块中调用。 - 无参数过程: ```sql ...

    java调用oracle存储过程

    现在我们创建一个带有OUT参数的存储过程`TESTB`,它接收一个IN参数`PARA1`,返回一个VARCHAR2类型的值: ```sql CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2, PARA2 OUT VARCHAR2) AS BEGIN SELECT I_...

    访问ORACLE存储过程

    一、调用带有输入、输出参数的存储过程 1. 创建Oracle存储过程: ```sql CREATE OR REPLACE PROCEDURE GetRecords( name_out OUT VARCHAR2, age_in IN VARCHAR2 ) AS BEGIN SELECT NAME INTO name_out FROM test...

    oracle存储过程笔记

    存储过程可以带有参数,参数分为输入(in)、输出(out)和输入/输出(in/out)三种类型。以下是一些参数过程的实例: 1. **无参数过程**: ```sql create or replace procedure stu_proc as pname student.sname%...

    c#调用oracle存储过程[定义].pdf

    以下是一个带有IN、OUT和IN OUT参数的示例存储过程`mypar`: ```sql CREATE OR REPLACE PROCEDURE mypar(a IN number, b OUT number, c IN OUT number) IS BEGIN -- ... END mypar; / ``` 在C#中调用这个过程,你...

    oracle 存储过程

    - 对于带有OUT或IN OUT参数的存储过程,必须声明变量来接收结果。 4. **复合数据处理和CTE**: - 使用Common Table Expressions(CTE)可以在存储过程中创建临时结果集,简化复杂查询和多步骤处理。 - CTE允许在...

    Java调用Oracle的过程和函数

    ##### 4.2 调用带有一个输入参数的函数 ```java try { // 准备调用函数 cs = connection.prepareCall("{? = call myfunc(?)}"); // 注册输出参数类型 cs.registerOutParameter(1, Types.VARCHAR); // 设置...

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文将深入讲解如何在C#中调用存储过程,并涵盖带返回值和参数输入输出的情况。 首先,存储过程`GetNameById`是一个接受输入参数`@studentid`和输出参数`@studentname`的示例。存储过程内部查询`student`表,根据`...

    oracle存储过程语法及实例讲解

    创建带有参数的存储过程 更进一步,我们来看一个包含参数的存储过程示例: ```sql CREATE OR REPLACE PROCEDURE 示例过程 (param1 IN NUMBER, param2 OUT NUMBER) IS v_count NUMBER; -- 定义局部变量 BEGIN ...

    jdbc连接oracle,执行存储过程,带数据库存储过程

    执行Oracle存储过程主要涉及以下几个关键点: 1. 创建CallableStatement对象:使用Connection对象的`prepareCall()`方法创建CallableStatement实例,例如`CallableStatement cs = conn.prepareCall("{call procedure...

    oracle存储过程使用详解

    对于带有参数的存储过程,调用时需提供相应的参数值。此外,对于包含OUT和INOUT参数的过程,可能需要使用变量来接收返回值或预先设定初始值。 通过以上内容,我们不仅了解了Oracle存储过程的基础知识,还掌握了如何...

    存储过程的调用

    本文将详细介绍如何在Java环境下调用Oracle存储过程,包括无参数存储过程、带输入参数的存储过程、带输出参数的存储过程以及带有输入输出参数的存储过程。 #### 无参数存储过程的调用 **创建无参存储过程** 在...

    oracle存储过程与函数

    调用带`OUT`参数的存储过程,如`pro_findEmpNameById`,需要声明变量接收返回值: ```sql declare v_ename emp.ename%type; begin pro_findEmpNameById(7369, v_ename); dbms_output.put_line('编号 7369 对应的...

    编程之java调用存储过程.doc

    本文将详细解析如何通过Java调用Oracle存储过程,包括无返回值和有返回值的情况。 首先,我们需要了解存储过程的基本概念。存储过程是预编译在数据库端的一组SQL语句,可以接受输入参数,执行特定操作,并可能返回...

Global site tag (gtag.js) - Google Analytics