这里使用到的数据库为MySQL

package com.dz.entity;

import java.sql.*;

public class Pro_inoutTest {
public static void main(String[] args) {
insertDataByProcedure();
} public static void insertDataByProcedure() {
Connection conn = null;
CallableStatement cs = null;
try {
//得到连接
conn = DBUtil.getConnection();
//调用哪个存储过程prepareCall
cs = conn.prepareCall("{call pp3(?, ?)}");
//这里的两个参数为inout(输入输出参)
cs.setString(1,"333");
cs.setString(2,"egy49xa");
//将指定序号位置的 OUT 参数注册为给定的 JDBC 类型。
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
boolean hasMore = cs.execute();
//取指定位置的值
System.out.println(cs.getObject(1));
System.out.println(cs.getObject(2));
while(true){
//首先判断是否是结果集
if(hasMore){
ResultSet rs = cs.getResultSet();
while(rs.next()){
System.out.println(rs.getObject(1));
}
}else{
int count = cs.getUpdateCount();
if(count == -1){
//当count为-1时则结果集为最后一条数据
System.out.println("最后一条数据");
break;
}
}
hasMore = cs.getMoreResults();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close();
}
}
}
package com.dz.entity;

import java.sql.*;

public class Pro_inoutTest {
public static void main(String[] args) {
insertDataByProcedure();
} public static void insertDataByProcedure() {
Connection conn = null;
CallableStatement cs = null;
try {
//得到连接
conn = DBUtil.getConnection();
//调用哪个存储过程prepareCall
cs = conn.prepareCall("{call pp3(?, ?)}");
//这里的两个参数为inout(输入输出参)
cs.setString(,"333");
cs.setString(,"egy49xa");
//将指定序号位置的 OUT 参数注册为给定的 JDBC 类型。
cs.registerOutParameter(, Types.VARCHAR);
cs.registerOutParameter(, Types.VARCHAR);
boolean hasMore = cs.execute();
//取指定位置的值
System.out.println(cs.getObject());
System.out.println(cs.getObject());
while(true){
//首先判断是否是结果集
if(hasMore){
ResultSet rs = cs.getResultSet();
while(rs.next()){
System.out.println(rs.getObject());
}
}else{
int count = cs.getUpdateCount();
if(count == -){
//当count为-1时则结果集为最后一条数据
System.out.println("最后一条数据");
break;
}
}
hasMore = cs.getMoreResults();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close();
}
}
}

CallableStatement获得存储过程多个结果集的更多相关文章

  1. [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor

    本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...

  2. 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...

  3. 存储过程不返回记录集导致ADO程序出错

    HRESULT _hr = get_adoEOF(&_result); IsEOF()函数如下:其中ADOCG::_RecordsetPtr m_pRecordset; BOOL IsEOF( ...

  4. 使用EntityFramework调用存储过程并获取存储过程返回的结果集

    [实习]刚入职,公司要求完成两个任务,任务要求使用存储过程和事务,其中一个问题要获取存储过程的查询结果集.经过多方查找和自己的实践,终于找到了方法.这里记录一下. 看到的这篇文章中给出的例子是查询单个 ...

  5. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  6. mybatis/callablestatement调用存储过程mysql connector产生不必要的元数据查询

    INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...

  7. db2 存储过程 语法 及结果集查询

    第一次用存储过程,关于处理待办的,不知道怎么执行和传参数 给存储过程 ,其实就一句话很简单. @call PRC_MISSIONLIST_QUERY('27020214', '27040000', ' ...

  8. oracle创建存储过程并返回结果集(附C#调用代码)

    使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我 ...

  9. CallableStatement执行存储过程

    /** * 使用CablleStatement调用存储过程 * @author APPle * */ public class Demo1 { /** * 调用带有输入参数的存储过程 * CALL p ...

随机推荐

  1. BLE 5协议栈-直接测试模式

    文章转载自:http://www.sunyouqun.com/2017/04/page/3/ BLE协议充分考虑了设备的测试问题,在协议栈层面提供了直接测试模式,用于执行BLE设备的RF物理层一致性的 ...

  2. 【转】QT中添加的资源文件qrc时的路径问题小结

    @2019-06-13 [小记] QT中添加的资源文件qrc时的路径问题小结

  3. 基于partition的递归

    partition算法可以应用在快速排序算法中,也可以应用到 Selection algorithm(在无序数组中寻找第K大的值) Partition 实现 快速排序中用到的 partition 算法 ...

  4. zencart新增分类点击不进去的解决办法

    zencart批量表新增分类点击不进去的原因是安装了管理员权限分级模块,只要运行以下语句即可. INSERT INTO `admin_allowed_categories` (`categories_ ...

  5. KNN分类算法

    K邻近算法.K最近邻算法.KNN算法(k-Nearest Neighbour algorithm):是数据挖掘分类技术中最简单的方法之一 KNN的工作原理 所谓K最近邻,就是k个最近的邻居的意思,说的 ...

  6. Hadoop下MapReduce实现Pi值的计算

    Hadoop自带的例子中,有一个计算Pi值的例子. 这个程序的原理是这样的.假如有一个边长为1的正方形.以正方形的一个端点为圆心,以1为半径,画一个圆弧,于是在正方形内就有了一个直角扇形.在正方形里随 ...

  7. jquery实现在光标位置(input、textarea)插入内容的方法

    通过扫码枪扫码.按钮点击事件在光标处插入文本,这是前台js常用的功能.但是在input输入框和textarea文本框定位光标,插入数据是有点不同的 首先最简单的,适用于input输入框的方法 HTML ...

  8. BZOJ 2242 / Luogu P2485 [SDOI2011]计算器 (BSGS)

    type 1type\ 1type 1 就直接快速幂 type 2type\ 2type 2 特判+求逆元就行了. type 3type\ 3type 3 BSGS板 CODE #include< ...

  9. CentOS 7下安装IDL 8.2

    材料准备: CentOS 7 x86_64 IDL 8.2,下载自 ftp://ftp.lowell.edu/incoming/temp/old/IDL_Clients/v8.2/idl82sp2li ...

  10. 下载Americanlife 语音材料

    下载剧本 下载后会在给定目录生成多pdf文件,文件名为每一节的名称 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/11 ...