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

转转jdbc 存储过程

    博客分类:
  • java
阅读更多
通过jdbc调用存储过程
     有进要通过jdbc调用存储过程,来说一下怎样来实现?
 在我见过的有两种情况:
         1)返回一个结果集(ResultSet)。
  2)返回一个特定的值。
 下面来详细的说明。
 1)返回一个结果集(ResultSet),这种类似通常的处理结果集
    如果事先就有一个类似如下的procedure
CREATE PROCEDURE getShipQuantity @jsid int  AS
SELECT jf_js_id,SUM(jf_ship_quantity) AS shipqty 
FROM tjobsheet_finish f WHERE (jf_js_id=@jsid)
GROUP BY jf_js_id
              那么我们将通过如下的代码来调用
  String sql = "{ call getShipQuantity(?) }";
         Connection con = getSession().connection();//通过hibernate得到的连接
         ResultSet  rs = null;
        BigDecimal shipQuantity = new BigDecimal(0);
        try{
             CallableStatement cs = con.prepareCall(sql);
            cs.setInt(1,jsoId);//设置输入参数
            rs = cs.executeQuery();//返回结果集
            if(rs.next()){
                     shipQuantity = new BigDecimal(rs.getDouble(2));
            }
            logger.debug("shipQuantity --------------------- "+shipQuantity);
        }catch(Exception e){
            logger.debug(e);
        }

      2)返回一个特定的值。也就是说,在procedure的定义中已经用output输出参数了。请看下面的proceduer
create procedure getSingleWgt @@singleWgt numeric(8,3) output,@jsnum varchar(11) = '0000-0480'
as
declare @stwgt numeric(8,3)
select  @stwgt = sum(b.stwgt)
from js as a
inner join jsactdtl as b 
on a.jsnum = b.jsnum
where a.completion = 1 
and b.stflag = 22
and a.jsnum = @jsnum
select @@singleWgt = (@stwgt/orderedqty)  from js where jsnum = @jsnum

        那么我们将通过如下的代码来调用
String sql = "{ call getSingleWgt(?,?) }";
Connection con = getSession().connection();//得到connection
try{
     CallableStatement cs = con.prepareCall(sql);//通过它来执行sql
    cs.registerOutParameter(1,java.sql.Types.FLOAT);//注册输出参数
    cs.setString(2,shipment.getJsnum());//指出输入参数
    
    if(cs.execute()){//执行
    float output = cs.getFloat(1);//返回值        
    }
}catch(Exception e){
    logger.debug(e);
}

分享到:
评论

相关推荐

    jdbc针对存储过程通用的jdbc封装.zip

    这个"jdbc针对存储过程通用的jdbc封装.zip"文件很可能包含了一个Java库或示例代码,它对JDBC进行了封装,以简化调用数据库存储过程的过程。存储过程是预编译的SQL语句集合,它们在数据库服务器上执行,提供了性能...

    jdbc调用存储过程

    使用jdbc调用存储过程的代码示例 调用数据库连接池

    JDBC开发过程与原理

    - **CallableStatement接口**:用于执行存储过程。 - **ResultSet接口**:表示查询结果集,通常是一个只读、向前滚动的游标。 - **DatabaseMetaData接口**:提供有关数据库的信息,如支持的数据类型、系统函数等。 -...

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    标题中的“jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标”涉及到三个主要的Java数据库编程知识点:JDBC连接、Oracle数据库中的CLOB类型处理以及通过Java调用存储过程处理输出游标。 1. JDBC...

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    总结来说,从Java存储过程返回JDBC ResultSet作为REF CURSOR,主要是为了解决Oracle数据库的特性和JDBC的兼容问题。通过Oracle9i引入的特性,开发者可以利用这种方法在PL/SQL和Java之间更灵活地交换数据。然而,这种...

    groovy将JDBC中oracle存储过程游标转换为多层json

    ### Groovy将JDBC中Oracle存储过程游标转换为多层JSON 在本文档中,我们将探讨如何使用Groovy脚本结合JDBC技术从Oracle存储过程中获取数据,并将其转换为多层JSON格式。该方法特别适用于需要从XML输入中提取数据并...

    Access_JDBC30

    描述中的“jaar包”可能是笔误,通常我们说的是"jar"包,它是Java Archive的缩写,是一种用于存储Java类文件、资源文件以及元数据的文件格式。"要的请抢先"可能意味着这个驱动在某些场景下是必需的,或者比较稀缺。 ...

    spring-jdbc jar包.rar

    1. **JdbcTemplate**:这是Spring JDBC的核心类,它通过模板方法模式将常见的JDBC操作进行了封装,如执行SQL查询、更新、调用存储过程等。开发者只需要关注SQL语句和参数,而无需处理连接创建、关闭、异常处理等繁琐...

    Java实现调用MySQL存储过程详解

    在Java应用程序中,可以通过Java Database Connectivity (JDBC) API来调用MySQL的存储过程。 首先,确保你已经安装了MySQL数据库,并且在数据库中创建了一个或多个存储过程。例如,`findAllBook`、`pro_test`和`pro...

    Oracle12C JDBC 驱动

    Oracle12C JDBC驱动还支持高级特性,如分布式事务处理、批量操作、预编译的SQL语句、游标、存储过程调用、连接池管理等。此外,通过`oracle.jdbc.pool.OracleDataSource` 类可以实现连接池功能,如使用Oracle的...

    spring对jdbc的支持jar包

    1. **JdbcTemplate**:这是Spring JDBC的基础组件,它通过模板方法模式封装了常见的JDBC操作,如执行SQL查询、更新、存储过程等。使用JdbcTemplate,开发者无需手动管理数据库连接、预编译语句、结果集转换等细节,...

    JDBC资料文档第一部分

    - **CallableStatement**:用于访问数据库中的存储过程,提供了一些方法来指定语句所使用的输入/输出参数。 - **ResultSet**:查询返回的数据库结果集。 - **ResultSetMetaData**:用于获取关于ResultSet对象中列...

    sqljdbc41.jar

    6. 支持SQLServer的高级特性,如XML类型、游标、存储过程等。 总结,sqljdbc41.jar作为SQLServer的JDBC驱动,是Java开发者与SQLServer数据库交互的重要桥梁。理解其工作原理和使用方法,能有效提升数据库操作的效率...

    各种数据库的jdbc驱动

    使用SQL Server JDBC驱动,开发者可以在Java应用程序中执行SQL Server的查询、存储过程等操作。 2. Oracle JDBC驱动: Oracle提供了两种主要的JDBC驱动: Thin驱动和OCI驱动。 Thin驱动(也称为Type 4)是纯Java...

    hive1.10jdbc包

    使用Hive1.10 JDBC包的过程大致如下: 1. **下载与安装**:首先,你需要下载Hive1.10的JDBC驱动,这通常是一个jar文件,如描述中提到的"1.1.0"可能就是这个驱动的版本号。 2. **配置环境**:将下载的JDBC驱动添加...

    开源的access jdbc驱动

    标题中的“开源的access jdbc驱动”指的是一个名为UCanAccess...在实际应用中,开发者可以利用UCanAccess执行SQL查询、事务处理、存储过程,以及进行各种数据库管理任务,从而高效地处理和管理基于Access的数据库系统。

    gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_

    2. **Geotools的JDBC数据存储(DataStore)**: Geotools提供了DataStore接口,它是访问各种数据源(如Oracle数据库)的抽象层。通过这个接口,开发者可以轻松地读取、写入和更新空间数据。 3. **Spatial SQL**: ...

    jdbc实现与线程池

    * ResultSet:用于存储查询结果的对象。 jdbc 的作用图: jdbc 的作用图是指 jdbc 在 Java 程序和数据库之间的中间件角色,负责将 Java 程序的请求转换为数据库可以理解的 SQL 语句,并将数据库的响应结果返回给 ...

Global site tag (gtag.js) - Google Analytics