一般在java中,数据查询是通过Statement, PreparedStatement获取结果集,今天向大家介绍通过CallableStatement调用存储过程,从而获取结果集.        本文是所用的数据库为oracle.       一.  测试数据库表: sql 代码 create table wilent_user( id number(5) primary key, name varchar2(100), sex varchar2(1),    --Y为男,F为女; group…
jdbc调用存储过程获取多个结果集 2017年07月26日 21:20:22 Kenny-Liu 阅读数:1486 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/L2388399752/article/details/76165734 这几天,公司重构一套erp,用到很多存储过程,但我在用jdbc调用存储过程的时候发现无法接收多个结果集(存储过程select返回的Result),而且国内很难找到解决方案,今天下午花了一下午,最后终于实现了. C…
java程序调用存储过程       PL/SQL子程序,很多情况下是给应用程序来调用的,所有我们要掌握使用其他编程语言来调用我们写好的存储过程.下面我们介绍下使用java调用Oracle的存储过程.     准备代码: package com.mscncn.plsql.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil…
java程序调用存储过程 jdbcUtil.java文件 package cn.itcast.oracle.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { private static String…
创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname character)    RETURNS SETOF record     LANGUAGE 'plpgsql' COST 100    VOLATILE     ROWS 1000AS $BODY$ DECLARE  rec record;BEGIN for rec in EXECUTE 'select id…
Java JDBC调用存储过程:无参.输入带参.输出及输出带参 示例代码: package xzg; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class JDBCtest { public static void main(String[]…
这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname out student.sname%type, stphone out student.phonenumber%type, stuadd out student.saddress%type) 2 as countnumber number; 3 begin 4 selectcount(*) int…
准备一个oracle 的JDBC jar 包:ojdbc14_11g.jar 首先找到你的 oracle 安装位置,例如: 1.创建一个JDBC数据库连接工具类: package com.test.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; publ…
1,加载驱动: 2,获取连接 3,设置参数 4,执行: 5,释放连接 普通jdbc的执行过程: conn.prepareCall() 上面是一个调用存储过程的示例.…
@Override public BaseResultMessage saveOrderConfirm(String billNo) { BaseResultMessage rm = Utils.renderDefaultResultMessageError(); PointProcedureDto pointProcedure = new PointProcedureDto(); pointProcedure.setBillNo(billNo); pointProcedure.setBillT…
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class TestMac { public static void main(String[] args) { System.out.println("Operation System=" + getOsName());…
//?代表一个参数,多个参数用逗号隔开 CallableStatement cs = connect.prepareCall("{?=call 存储过程名称或函数名(?)}"); cs.registerOutParameter(1, Types.VARCHAR);//按参数顺序设置参数类型 cs.setString(2,"参数值");//参数赋值 cs.execute(); String result = cs.getString(1);//返回值 cs.close…
dao层: import java.util.Map; public interface AppGthdDao { public String gthd(Map map); } mapper层 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace=&qu…
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="empno" column="empno"/> <result property="ename" column="ename"/> <result property="mgr" column="…
本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结果集难住了.经Google后,找到很多资料,发现一种最简便的方式(见下面的存储过程部分): 存储过程建好后,怎么调试它又成了问题,它不能像MS-SqlServer一样exec,但是可以通过下面的SQL语句调用(见调用存储过程SQL版),主要知识点是 参考游标的使用. 后面附上.NET调用存储过程返回…
Java代码调用存储过程和存储函数要使用CallableStatement接口 查看API文档: 上代码: java代码调用如下的存储过程和函数: 查询某个员工的姓名  月薪 职位 create or replace procedure queryEmpinfo(eno in number, pename out varchar2, psal out number, pjob out varchar2) as begin select ename,sal,empjob into pename,p…
JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverManager.getConnection(.... /** *p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替 *其余地方写法固定 */ CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}"); /*…
虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁移.所以进行复习了一下.下面是一些存储过程的例子. 1. 例子1 DELIMITER // DROP PROCEDURE IF EXISTS loginandreg // CREATE PROCEDURE loginandreg( OUT userId BIGINT, ), ), ) ) BEGIN…
除了常规调用sql语句和进行简单的插入删除操作外,OLEDB还提供了调用存储过程的功能,存储过程就好像是用SQL语句写成的一个函数,可以有参数,有返回值. 存储过程除了像普通函数那样返回一般的值以外,还可以返回结果集,对于返回的内容可以使用输出参数的方式获取,但是如果返回的是结果集,一般不推荐使用输出参数来获取,一般采用的是使用多结果集来接收.另外对于输入参数一般采用参数化查询的方式进行,因此它的使用与参数化查询类似,但是相比于参数化查询来说要复杂一些. 存储过程的使用 对于输出参数,在绑定DB…
一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要返回更多结果集也是一样的,如果需要判断,就继续增加存储过程参数,如果不需要判断就直接在存储过程中,增加查询的SQL语句即可).实现这个功能还有更简单的方法,可以写SQL关联语句查询出两张表的结果,返回一个组合的结果集.我这里当然是为了实现这个效果,所以把它的实现复杂化了.继续说下我今天在mysql上…
一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)   AS BEGIN INSERT INTO DBO.EMP (ID,NAME) VALUES (PARA1, PARA2); END PRO_1; Java代码: package com.icesoft.service; import java.sql.*; import java.sql.ResultSet; p…
[实习]刚入职,公司要求完成两个任务,任务要求使用存储过程和事务,其中一个问题要获取存储过程的查询结果集.经过多方查找和自己的实践,终于找到了方法.这里记录一下. 看到的这篇文章中给出的例子是查询单个表的所有数据,但是我的要求是多表查询并获取其中的几个字段.而且我是使用POCO(POCO是指Plain Old Class Object,也就是最基本的CLRClass),还是和示例有诸多不同.这里我结合文章中的示例和自己的尝试,解决了这个问题 首先建立存储过程 可以看到 这里我只需要sn.jewe…
Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,ibatis调用存储过程有一个专门的标签<procedure>,在mybats里面已经没有这本标签了,而是通过一个参数statementType="CALLABLE"来区分.废话不多说,直接看怎么写吧! 测试环境:mybats3.0.4 + sqlserver2008 +Spri…
一.简介 jdbc调用存储过程与调用一般的sql语句有些差别.jdbc调用一般的sql语句的时候,返回的是结果集,或是sql语句后是否执行成功的标记量.而存储过程返回的可以是结果集,输出参数.返回状态和受影响行数.而mysql存储过程不支持return,所以只有剩下的三种返回方式. 调用的过程一般如下: 1.创建连接 Connection conn = DriverManager.getConnection(url, user, password); 2.创建CallableStatement …
一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后执行,而存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应…
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableStatement 接口包含有Statement 接口和PreparedStatement 接口定义的全部方法,但是并不是所有的方法我们都要使用,主要使用的方法有这样几个: CallableStatement 常用方法: 返回类型 方法签名 说明 boolean execute() 执行 SQL 语句…
相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数) 来执行它.存储过程是数据库中 的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 一个存储过程是一个可编程的函数,它在数据…
需要用到的接口 接口 CallableStatement JDK文档对改接口的说明: public interface CallableStatement extends PreparedStatement 用于执行 SQL 存储过程的接口.JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程.此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式.如果使用结果参数,则必须将其注册为 OUT 参数.其他参数可用于输入.输出或同时用于…
疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\product\11.2.0\dbhome_1\jdbc\lib,文件夹中有若干.jar文件,选择ojdbc6.jar即可. 2.连接oracle 驱动位置:oracle.jdbc.OracleDriver url写法:jdbc:oracle:thin:@localhost:1521:orcl 3.J…
Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法,并给出了详细的代码,希望能对读者有所帮助. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 存储过程可以减少sql语句的网络传输,使得很多开发人员喜欢用存储过程,但是如果想把存储过程用好,用灵活还是需要花费一定的时间和努力的.本文主要java调用存储过程和ibatis调用存储过程…