--1、存储过程包的创建,数据类型和存储过程定义 CREATE OR REPLACE PACKAGE htjd_package IS--包创建,面向不同客户或者功能类型 TYPE HT_CURSOR IS REF CURSOR;--自定义游标类型 PROCEDURE HT_GETALLPSINFO (ref_cursor OUT HT_CURSOR);--自定义存储过程 PROCEDURE HT_GETPSINFO(ps_id IN integer,ref_cursor OUT HT_CURSOR); PROCEDURE HT_INVERTHIS(his_year IN varchar2,ref_cursor OUT HT_CURSOR); end HTJD_PACKAGE;
--2、包内容和存储过程内容的实现 CREATE OR REPLACE PACKAGE BODY HTJD_PACKAGE IS PROCEDURE HT_GETPSINFO(ps_id IN integer, ref_cursor OUT HT_CURSOR) IS begin OPEN ref_cursor FOR select * from mnt_powerstation where psid = '' || ps_id || ''; end HT_GETPSINFO; PROCEDURE HT_GETALLPSINFO(ref_cursor OUT HT_CURSOR) IS BEGIN OPEN ref_cursor FOR SELECT * FROM mnt_powerstation; END HT_GETALLPSINFO; PROCEDURE HT_INVERTHIS(his_year IN varchar2,ref_cursor OUT HT_CURSOR) IS BEGIN OPEN ref_cursor FOR 'SELECT * FROM MNT_INVERTER_HIS'||his_year; END HT_INVERTHIS; END HTJD_PACKAGE;
//3、JAVA代码调用存储过程并读取数据 import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { /**建立数据库通道连接**/ DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test", "test", "test"); /**1、获取单电站信息**/ //CallableStatement stmt = conn.prepareCall("BEGIN HT_GETPSINFO(?, ?); END;"); //CallableStatement stmt = conn.prepareCall("{ call HT_GETPSINFO(?, ?) }"); //stmt.setString(1, "1"); //stmt.registerOutParameter(2, -10); //REF CURSOR(OracleTypes.CURSOR==-10) //stmt.execute(); //ResultSet rs = (ResultSet) stmt.getObject(1);//1代表OUT在第一个参数,2代表OUT在第二个参数 //while (rs.next()) { // System.out.println(rs.getString("psid") +"--"+rs.getString("psname")); //} /**获取多电站信息**/ CallableStatement stmt = conn.prepareCall("BEGIN htjd_package.HT_INVERTHIS(?,?); END;"); //CallableStatement stmt = conn.prepareCall("{ call htjd_package.HT_INVERTHIS(?,?) }"); stmt.setString(1, "2014");//1代表输入参数的位置 stmt.registerOutParameter(2, -10); //REF CURSOR(OracleTypes.CURSOR==-10),1代表OUT在第一个参数,2代表OUT在第二个参数 stmt.execute(); ResultSet rs = (ResultSet) stmt.getObject(2);//1代表OUT在第一个参数,2代表OUT在第二个参数 while (rs.next()) { System.out.println(rs.getString("INVERTERID") +"--"+rs.getString("COLLECTTIME")+"--"+rs.getString("DCCURRENT")); } /**关闭通道**/ rs.close(); rs = null; stmt.close(); stmt = null; conn.close(); conn = null; } catch (SQLException e) { System.out.println(e.getLocalizedMessage()); } } }
相关推荐
java调用oracle存储过程或者函数
通过实例详细介绍了用java调用oracle存储过程的方法和步骤,包括无返回值的存储过程、有返回值的存储过程(非列表)和返回列表的存储过程的编写、JAVA调用,是一个对存储过程调用的一个全面总结,对程序开发具体实际...
java调用oracle存储过程实现增删改查
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
Java调用带参数的Oracle 存储过程并返回集合,
java调用oracle存储过程返回结果集,Record,cursor参照.pdf
C#中调用oracle存储过程返回数据集
帆软报表调用Oracle存储过程如果存储过程定义中没有参数,但是设计器中缺弹出一个storeParameter1参数的解决插件
JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程
希望大家可以多光顾一下我上传的资源,也欢迎大家提问。
Java调用oracle存储过程
ibatis调用oracle存储过程分页
vba 调用oracle 存储过程vba 调用oracle 存储过程vba 调用oracle 存储过程vba 调用oracle 存储过程vba 调用oracle 存储过程
讲有关java如何调用ORACLE存储过程以及游标使用,它只包含JAVA调用ORACLE存储过程游标使用(上),还有JAVA调用ORACLE存储过程游标使用(上),
java调用oracle存储过程.wps java调用oracle存储过程.wps java调用oracle存储过程.wps
提供JAVA调用ORACLE存储过程通用类
使用java实现oracle存储过程。 共有3个小例子。实现的功能 1、无返回值的存储过程 如 insert 2、有返回值的存储过程(非列表)select id from tab 3、返回列表 如:select * from tab 顺便鄙视下csdn,作为一个it...
NULL 博文链接:https://fruitking.iteye.com/blog/1447333
Java调用Oracle存储过程的方法
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...