通过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调用存储过程的代码示例 调用数据库连接池
本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。 入参是字符串格式的xml,目的...3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例
NULL 博文链接:https://vernonchen163.iteye.com/blog/1902788
4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API...
在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。 9、使用Object...
MySQL)作为存储,随着数据量的增加,“分库分表”是早晚面临的问题,即使有诸如MyCat、ShardingJDBC 等优秀的中间件,“分库分表”还是给RD和DBA带来较高的成本;NewSQL数据库出现后,由于它不仅有
JDBC 的 OData 生成器代码生成器 OData Producer Codegen for ...###Clone 并构建:### 将存储库克隆到本地: git clone https://github.com/msopentechcn/odata-producer-codegen-for-jdbc.git 将 Maven 项目 - oda
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的...
MyBatis是一款优秀的持久层框架,用于支持普通SQL查询、存储过程和高级映射。它消除了几乎所有的JDBC...此外,MyBatis还支持自定义SQL、存储过程以及高级映射,免除了大部分的JDBC代码以及设置参数和获取结果集的工作。
执行存储过程 关闭客户 例如,有关用法的演示,请转到 。 问题与项目 此存储库的“问题和项目”选项卡被禁用,因为它是Ballerina标准库的一部分。 要报告错误,请求新功能,开始新讨论,查看项目面板等,请访问...
此文档主要是将SQLServer数据脚本转为达梦数据库数据脚本,截图为主,有需要的可以参考!
该项目旨在提供可用于针对非数据库数据存储运行 SQL 的 JDBC 驱动程序。 第一个将是 。 随着时间的推移,最终目标是支持 HBase、Cassandra、Accumulo 等。 用于从 SQL 转换为本地查询语言的底层技术将是 。 实际上...
这个员工管理系统是使用 Java 创建的,带有用于数据库...转到包,Database然后转到文件LoginInformation。在这里输入您的根 SQL 密码 运行CreateDatabaseSQL 文件,然后运行包中的GUIRunner文件GUI 享受搞项目的乐趣!
基于某某系统平台的数据源迁移 1 一、背景 4 二、环境准备 4 1、软件 4 2、jar包 4 ...七、某某系统中调用 mysql存储过程 11 1、调用存储过程配置 11 2、存储过程中遇到的问题 13 八、后续迁移方案 17
MyBatis是一个优秀的基于Java的持久层框架,它内部封装了JDBC,使得开发者只需要关注SQL语句本身,而无需处理加载驱动、创建连接、创建Statement等繁琐的过程。MyBatis的主要特点和功能如下: 简单易用:通过XML...
存储过程与编码 MySQL 存储过程中, 表和数据的编码与数据库和存储过程默认的编码不同则可能出现 sql 不会使用索引的情况, 因为 MySQL 会对条件列的数据做相应的编码转换, 比如以下, 表数据为 latin1, MySQL 解析器会...
springboot-kafka-connect-jdbc-streams 该项目的主要目标是与 , 和一起玩。 为此,我们具有:在中插入/更新记录的store-api ; Source Connectors ,用于监视MySQL插入/更新的记录,并将与这些更改相关的消息推送...
3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...
3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...