Java调用oracle存储过程通过游标返回临时表数据

mybatis调用oracle存储过程返回游标 读取到java的List<Map> mybatis调用oracle存储过程返回结果集:http://blog.youkuaiyun.com/eunyeon/article/details/52745396 java读取ORACLE 存储过程 返回游标(cursor) 格式 读取到List中:https://my.oschina.net/u/1587544/blog/371792 mapper: {call P_TES 阅读详情
   项目开发过程中,不可避免的会用到存储过程返回结果集。特别是选择 Oracle做为 数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇:

       1.存储过程返回结果集

       2.Java中执行存储过程以及多结果集处理

       3.返回临时表中数据





  1. package com.zjhcsoft.test.utl;  
  2.   
  3. import java.sql.CallableStatement;  
  4. import java.sql.Connection;  
  5. import java.sql.DriverManager;  
  6. import java.sql.ResultSet;  
  7.   
  8. import oracle.jdbc.OracleCallableStatement;  
  9. import oracle.jdbc.driver.OracleTypes;  
  10.   
  11. public class TestOracleProc3 {  
  12.   
  13.     /** 
  14.      * @param args 
  15.      */  
  16.     public static void main(String[] args) {  
  17.         try {  
  18.             Class.forName("oracle.jdbc.driver.OracleDriver");  
  19.         } catch (Exception e) {  
  20.             e.printStackTrace();  
  21.         }  
  22.   
  23.         Connection conn = null;  
  24.         String DBurl = "jdbc:oracle:thin:@134.98.8.168:1521:ora817";  
  25.         try {  
  26.             conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123");  
  27.             System.out.println("Getting Connection...");  
  28.             conn.close();  
  29.         } catch (Exception e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.           
  33.         try {  
  34.             conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123");  
  35.             long start = System.currentTimeMillis();  
  36.             //最关键一步  
  37.             conn.setAutoCommit(false);  
  38.             OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("{call sfz_obj.proc_sfz_proc_test(?,?)}");  
  39.             cstmt.setString(1, "");  
  40.             cstmt.registerOutParameter(2,OracleTypes.CURSOR);  
  41.             cstmt.execute();  
  42.             long end = System.currentTimeMillis();  
  43.             System.out.println("this procedure consumes "+((end-start)/1000)+" excute time.");  
  44.             start = System.currentTimeMillis();  
  45.             int i=0;  
  46.             ResultSet rs = (ResultSet)cstmt.getObject(2);  
  47.                while (rs.next()) {  
  48.                    System.out.println("column"+(i+1)+":"+rs.getString(1)+",  "+rs.getString(2)+",  "+rs.getString(3));  
  49.                    i++;  
  50.                }   
  51.                System.out.println("this procedure has "+(i-1)+" data.");  
  52.             end = System.currentTimeMillis();  
  53.             System.out.println("show this procedure data consumes "+((end-start)/1000)+" excute time.");  
  54.             conn.commit();  
  55.             cstmt.close();  
  56.             conn.close();  
  57.         } catch (Exception e) {  
  58.             e.printStackTrace();  
  59.         }  
  60.     }  
  61.   
  62. } 




本文转自:http://blog.youkuaiyun.com/liangweiwei130/article/details/19539489

Java调用oracle存储过程通过游标返回临时表 NULL 博文链接:https://fruitking.iteye.com/blog/1447333 立即下载

相关推荐

最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin

公司的历史项目在导出功能上引用的是poi-3.12版本,后续再做word模板导出功能时用到了poi-3.15版本,升级完后发现项目的很多导出功能都瘫痪了。用旧版本,新功能无法使用;用新版本,旧功能瘫痪,且整改的工作量比较大。使用maven-shade-plugin,将某个版本的依赖名称进行修改,重新引入即可。

S_White_Island的博客 1万+

使用oracle返回游标中带有临时表问题

最近碰到一个通过oracle游标返回结果集问题,游标中的语句如果涉及到临时表的话,就导致返回的数据是空的,请教同事后,原来临时表的定义有点问题,原来的方式是: 1.create global temporary table TEMPDATA ( N1 NUMBER(22,7), ... ) on commit delete rows; 改成如下即可解决问题 2.cre...

diystyle 848

FFmpeg视频编码的流程详解及参考demo

本文主要讲解FFmpeg的视频编码的具体流程,API使用。最后再以一个非常简单的demo演示将一个yuv数据文件编码为H264的视频文件,也就是YUV编码为H264。

分享音视频技术 4498

oracle存储过程如何取动态字段内容(临时表)并汇总合并输出数据集

--1、创建函数get_sum_FYF001 获取合计的应发金额CREATE OR REPLACE FUNCTION get_sum_FYF001(table_name IN VARCHAR2,FPeriodNum1 IN VARCHAR2 ,FPeriodNum2 IN VARCHAR2 )RETURN NUMBER ISresult NUMBER;sql_str VARCHAR2(...

amgo74207的博客 574

【实用工具】QQ自动发消息

程序下载:蓝奏云 源代码: #include<Windows.h> #include<bits/stdc++.h> #include<conio.h> using namespace std; void HideWindow() { HWND hwnd; hwnd=FindWindow("ConsoleWindowClass",NULL); if(hwnd) ShowWindow(hwnd,SW_HIDE); return; } int main() { pri

liuzich的博客 2643

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 492

oracle过程返回一张表,ORACLE 存储过程怎么返回临时表结果集

我刚做的,参考下:SQL> CREATE GLOBAL TEMPORARY TABLE REPROTTEST(2 ID NUMBER,3 ANAME VARCHAR2(20)4 ) ON COMMIT DELETE ROWS;(也可以用PRESERVER ROWS,看实际需求)Table createdSQL> create or replace procedure report_mo...

weixin_31486383的博客 1124

Bode图、ABCD矩阵与EET结合:三步搞定复杂电路传递函数分析

在模拟电路与电源控制设计中,传递函数和频率响应是衡量系统稳定性的核心指标。Bode图以直观的幅频/相频曲线揭示带宽与相位裕度,ABCD二端口矩阵可将级联网络结构化表达,而EET额外元素定理则针对寄生电容、负载效应等局部修正提供显式公式。三者互补,组合成一套从整体拓扑到局部寄生修正的完整分析方法:先用ABCD搭建主体网络,再用EET快速加入额外元件,最后用Bode图验证传递函数和稳定裕度。该方法适用于滤波器设计、电源环路补偿、运放稳定性分析等线性小信号场景,支持Python/SciPy和SPICE交叉验证,显

weixin_32496547的博客 362

oracle 将游标输出,oracle创建游标和输出

declarecursor c_test_tbl2 isselect t2.id, t2.salaryfrom test_tbl2 t2, test_tbl1 t1where t2.id = t1.idand t2.salary <> t1.salary;c_row c_test_tbl2%rowtype;beginfor c_row in c_test_tbl2 loopdbms_o...

weixin_35922953的博客 1419

【华为OD机试真题E卷】300、 出租车计费 、靠谱的车 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

题目描述 >程序员小明打了一辆出租车去上班,出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大,出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常 >  比如: 1、23再多一块钱就变为25; 2、39再多一块钱变为50; 3、399再多一块钱变为500; >  小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋,给出计费表的表面读数,返回实际产生的费用

KJ.JK 4万+

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 937

oracle返回临时表,存储过程返回临时表的问题

嗯,如果没有复杂计算,建议直接用ref cursor。create or replace package pkg_rome_in_out as--************************************************-- ** Get login and logout information of site.-- ** In parameters: S_RQ-- ** I...

weixin_42522676的博客 284

Cesium 实战 04 - 标绘功能系列之画点(draw point)

Cesium 实战 - 标绘功能之画点(draw point)。

非科班Java出身GISer的博客 1083

Java oracle临时_Java调用oracle存储过程通过游标返回临时表数据

项目开发过程中,不可避免的会用到存储过程返回结果集。特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇:1.存储过程返回结果集2.Java中执行存储过程以及多结果集处理3.返回临时表中数据package com.zjhcsoft.tes...

weixin_29056145的博客 202

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java调用存储过程(返回游标变量,利用索引表,临时表)

/*创建临时表及存储过程*/ Create Global Temporary Table test1(name varchar2(20),age int) On Commit Delete Rows; create or replace package addnumis type emp...

chuifuhuo6864的博客 126

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

oracle返回临时表,Java调用oracle存储过程透过游标返回临时表

Java调用oracle存储过程通过游标返回临时表CREATE TABLE SFZ_TEST_MANAGER_XG(yxgh VARCHAR2(100),ygxm VARCHAR2(100),position_name VARCHAR2(100));insert into SFZ_TEST_MANAGER_XG values ('abc1','bcd1','cde1');insert into S...

weixin_35080040的博客 330

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java存储过程返回游标_java调用存储过程(返回游标变量,利用索引表,临时表)...

/*创建临时表及存储过程*/Create Global Temporary Table test1(name varchar2(20),age int)On Commit Delete Rows;create or replace package addnumistype emp_table_type is table of varchar2(200)index by binary_integer...

weixin_39756336的博客 221

oracle存储过程查询多列,greenplum 存储过程 返回结果集多列和单列

PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...oracle 存储过程返回结果集 (转载)好久没上来了, 难道今天...

weixin_42511177的博客 602

java 调用 oracle存储过程 事务临时表

JAVA方法中调用oracle存储过程 ,如果存储过程是从事务型临时表查询数据返回游标, 则需修改JAVA连接对象属性,如果“自动提交”为TRUE, 把它改为FALSE, 然后等你FETCH完数据、关闭游标之后再手动COMMIT.

soo的专栏 528

Mybatis调用Oracle存储过程(游标返回)

使用mybatis调用oracle sp的过程如下: step1:首先在对应的配置文件(*mapper.xml)中,定义返回类型值,如下: <mapper namespace="com.sapws.callimpl.shqmxx.dao.WorkerMapper"> <resultMap type="com.sapws.callimpl.shqmxx.pojo.Pat...

lucas1573的专栏 1269

mybatis 游标查询_SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例

之前一直都是用SSM+Mysql数据库做开发,突然一下子要换成Oracle数据库,感到非常不熟悉.虽然学过Oracle数据库,但由于使用Oracle数据库,牵涉到写存储过程等,所以相对复杂些.根据网上散落的资料,自己在学习之后,做出来的一个示例,分享给大家,以供交流学习.1.定义包头oracle存储过程返回结果集需要自定义一个CURSOR(游标变量)性质的变量,这个要在包头定义,所以此处首先创建一...

weixin_39648432的博客 640

Oracle 存储过程返回数据集(游标)

声明:本文整理自网络,加上个人实际实验结果   Oracle存储过程返回数据集,其实就是返回游标,这里需要了解这样几个概念,游标、存储过程的out参数、引用游标类型、Oracle的程序包,这里只说明具体怎么做,如果想了解以上概念请自行在网上搜索或关注我的博客。 首先说一下思路:         定义一个包(这相当于一个容器)(也可以理解为Java中的类)         包中包含一个存储

苦海行舟 1万+

Java代码 jdbc调用Oracle存储过程返回游标

public class JdbcUtil { public static Connection getConnection() throws Exception { Class.forName("oracle.jdbc.OracleDriver"); Connection connection = DriverManager.getConnection("...

phillip629的博客 1148
上一篇: window7下Java环境变量配置图解
下一篇: order_by_、group_by_、having的用法区别
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值