java调用oracle 存储过程 以及游标使用

打开 PLSQL 创建一张:如果你没有PLSQL  找我

-- Create table
create table T_QUN_STUDY
(
  T_ID       NUMBER not null,
  T_NAME     VARCHAR2(50),
  T_PASSWORD VARCHAR2(50)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table T_QUN_STUDY
  add primary key (T_ID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

 

 

写的存储过程包和主体:

CREATE OR REPLACE PACKAGE BODY QUN_STUDY IS
  ------------------------------
  --插入新数据--
  --author:xiaohe--
  --date:2009-11-21--
  PROCEDURE INSERT_T_QUN_STUDY(P_ID       IN NUMBER,
                               P_NAME     IN VARCHAR2,
                               P_PASSWORD IN VARCHAR2) IS
  BEGIN
    INSERT INTO T_QUN_STUDY
      (T_ID, T_NAME, T_PASSWORD)
    VALUES
      (P_ID, P_NAME, P_PASSWORD);
  END;
  ----------------------------
  --删除信息--
  --author:xiaohe--
  --date:2009-11-21 --
  PROCEDURE DEL_T_QUN_STUDY(P_ID IN NUMBER, X_OUT_RECORD OUT NUMBER) IS
  BEGIN
    DELETE T_QUN_STUDY TQS WHERE TQS.T_ID = P_ID;
    X_OUT_RECORD := 0;
  EXCEPTION
    WHEN OTHERS THEN
      X_OUT_RECORD := -1;
  END;
  -------------------------------
  --查询表所有信息--
  ----
  ----
  PROCEDURE QUERY_ALL_INFO(X_OUT_RECORD OUT NUMBER,
                           X_OUT_CURSOR OUT SYS_REFCURSOR) IS
  BEGIN
    OPEN X_OUT_CURSOR FOR
      SELECT * FROM T_QUN_STUDY;
    X_OUT_RECORD := 0;
  EXCEPTION
    WHEN OTHERS THEN
      X_OUT_RECORD := -1;
  END;

END QUN_STUDY;

 

 

JAVA 代码调用:

 

package com.procedure.core;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import oracle.jdbc.OracleTypes;

public class ConnectionDataBase {
 private String name = "scott";
 private String password = "tiger";
 private String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
 private String driverClassName = "oracle.jdbc.driver.OracleDriver";

 /**
  * 返回数据库 连接
  *
  * @return
  */
 public Connection getConn() {
  Connection conn = null;
  try {
   Class.forName(driverClassName);
   conn = DriverManager.getConnection(url, name, password);

  } catch (Exception e) {
   e.printStackTrace();
  }
  return conn;
 }

 public static void main(String[] agrs) throws SQLException {
  ConnectionDataBase cdb = new ConnectionDataBase();
  /**
   * 添加 无输出参数
   */
  // Connection conn = cdb.getConn();
  // CallableStatement call = conn
  // .prepareCall("{call QUN_STUDY.INSERT_T_QUN_STUDY(?,?,?)}");
  // call.setInt(1, 4);
  // call.setString(2, "蒙-混混");
  // call.setString(3, "76544");
  // boolean flag = call.execute();
  // System.out.println(flag);
  /**
   * 删除 得到输出参数
   */
  // Connection conn = cdb.getConn();
  // CallableStatement call = conn
  // .prepareCall("{call QUN_STUDY.DEL_T_QUN_STUDY(?,?)}");
  // call.setInt(1, 4);
  // call.registerOutParameter(2, Types.INTEGER);
  // call.execute();
  // Integer result = call.getInt(2);
  // System.out.println("执行结果0为正常  -1为不正常" + result);
  /**
   * 使用游标查询 所有的信息
   */
  Connection conn = cdb.getConn();
  /**
   * 得到 存储过程对象
   */
  CallableStatement call = conn
    .prepareCall("{call QUN_STUDY.QUERY_ALL_INFO(?,?)}");
  /**
   * 注册 整型
   */
  call.registerOutParameter(1, Types.INTEGER);
  /**
   * 注册游标类型
   */
  call.registerOutParameter(2, OracleTypes.CURSOR);
  call.execute();
  /**
   * 获取第一个注册的参数
   */
  Integer result = call.getInt(1);
  /**
   * 将游标 类型 转换为 结果集
   */
  ResultSet rs = (ResultSet) call.getObject(2);
  while (rs.next()) {
   System.out.println("id:" + rs.getInt(1));
   System.out.println("name:" + rs.getString(2));
   System.out.println("password:" + rs.getString(3));
  }

 }
}

OK  基本就已经搞定了

如果大家有不明白 或者想共同学习的可以加群:2987841

也可以联系我本人QQ:86780004

源代码 (存储过程包 建表SQL JAVA代码)

 

/Files/xiaohejava/源代码.rar 

转载于:https://www.cnblogs.com/xiaohejava/archive/2009/11/22/1608046.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日志处理中一些shell命令技巧

日志处理中一些shell命令技巧 阴差阳错的做的日志分析,前途未卜的这段日子,唯一还有点意思的可能就是手动的处理大量日志。总结一下。 日志文件的输入是动则几个G的文本。从N个这样的文件中得到一个列表,一个数字,一个比例。在什么…

catia v5法矢数据软件_catia介绍

CATIA是英文 Computer Aided Tri-Dimensional Interface Application 的缩写。 是世界上一种主流的CAD/CAE/CAM 一体化软件。在70年代Dassault Aviation 成为了第一个用户,CATIA 也应运而生。从1982年到1988年,CATIA 相继发布了1版本、2版本、3版本&…

(十七)WebGIS中距离及面积测量的原理和实现以及坐标转换的简单介绍

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.背景 在这一章里我们将讨论基础工具栏中另外两个常用工具:距离测量工具盒面积测量工具。 距离测量工具要求实现如下功能: a.通…

添加,修改,删除

前面声明: Imports System.Data Imports System.Data.OleDb ―――――――――――――――― Private ds As DataSet New DataSet Private ds1 As DataSet New DataSet Private sqlStr As String Private strcon As String "ProviderSQLOLEDB.1;Data Sour…

分享:一款快速传输大文件、支持英文版的工具

最近朋友小A向我求助:因为工作需要常常需要往国外发送数百兆甚至接近1G的超大文件。试了好几种方式都不满意,国内的可以发送超大附件的网站(如QQ邮箱,各种网盘)不支持英文界面,外国朋友看不懂。而WeTransfer这种免费We…

access查询出生日期格式转换_从身份证中提取出生日期的3个方法和计算年龄和星座的方法...

在我们日常的工作当中,经常会遇到通过身份证来获取出生年月日的需求,今天就给大家介绍三种可以从身份证中提取出生年月日的方法。我们都知道身份证不同的区域是有不同的含义的,代表出生年月日的数字是第7位到第14位,也就说我们把这…

MySql函数大全

[colorred]字符串函数[/color]ASCII(str)  返回字符串str的第一个字符的ASCII值(str是空串时返回0)mysql> select ASCII(2);  -> 50mysql> select ASCII(2);  -> 50mysql> select ASCII(dete);  -> 100 ORD(str)  如果字符串str句首是单字节返回与AS…

AutoRun Pro Enterprise II 教程--- 教你制作软件工具箱教程清晰版(教程画面清晰,教程语音可以调高)...

AutoRun Pro Enterprise II是一款功能极为强大的自动运行菜单制作工具。可在一个所见即所得的环境中创建并编辑一个专业的CD、DVD自动运行界面并生成自动运行文件。在自动运行界面中支持打开或执行文件,打印文档,发送邮件,访问站点&#xff0…

access如何设置定期报表汇总_报表工具选型对比系列 - 大报表

有些报表查询出的数据行数可达千万甚至上亿,这类报表通常被叫做大报表,大多数情况下都是些清单明细数据报表,也有少量分组报表。针对大报表,如果像常规报表一样,将数据一次性全取再交给前端呈现是不可行的。一是等待时…

CuteEditor—Html在线编辑器的领航者,超强的asp.net编辑器控件

CuteEditor—Html在线编辑器的领航者 NET、ASP.NET控件及源码大汇总 http://bbs.topsage.com/dispbbs.asp?boardid123&Id145465转载于:https://www.cnblogs.com/asingna/archive/2009/12/02/1615334.html

PLSQL Developer远程连接oracle数据库

前提是本机已经安装oracle,利用 net configuration assistant 。若本机没有安装oracle,无需装oracle的方法请点我打开net configuration assistant,选择“本地网络服务名配置,如下图所示然后选择添加服务名选择远程数据库实例名主…

【转】漫画:Bitmap算法

漫画:Bitmap算法转载于:https://www.cnblogs.com/apeway/p/10786283.html

广州 adobe 技术者开发日回归

今天,adobe 在广州举行了adobe 技术者开发日,一大早就起来搭车赶到广州去参加这次活动。这次活动,参加人数很多,不完全统计基本有200以上人,真是很难得一次聚会。在这次大会上7yue 发表很多讲话,还有adobe …

spad 探测器_大面阵SPAD阵列集成微透镜阵列,填充因子改善明显

基于CMOS制造工艺可实现大面阵、单片式单光子雪崩光电二极管(SPAD)阵列,并受到如3D成像、荧光寿命成像等各种应用的青睐,但常常受到低填充因子(fill factor,指感光区域面积与像元面积的比值)的困扰。SPAD填充因子的数值通常小于5%&#xff0c…

Azure Backup 简介

ViswanathTata云Enterprise 项目经理AzureBackup是 Azure恢复服务的一部分,在安全高效的环境中对上传到 Azure的数据提供简单可靠的管理和保护。Azure Backup以经济高效的方式提供无限的存储空间和长期的数据保留,这些功能使其成…

笔记:Java虚拟机运行时数据区

Java虚拟机在执行Java程序的过程中会把它管的内存划分为以下若干个不同的区域: 1、程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器;由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时…

高电压技术思维导图_钢铁技术:钢铁行业板坯连铸结晶器振动常见故障思维导图...

钢铁虾:(您距离钢铁虾只差关注)结晶器是连铸机的心脏,其振动偏差直接危及连铸过程的生产安全,其振动精度也往往与铸坯表面裂纹等缺陷息息相关。国内外常见板坯连铸结晶器振动形式有:①机械式振动;②双液压缸式振动&…

可以编辑vga格式文件的软件-PowerCreator Media Studio

vga格式的课件越来越多。不小心没有录制好的可见,想修改一下找了很久居然没有找到一个合适的软件。还有朋友给了一款:PowerCreator Media Studio用起来很方面,和premiere的操作很像。大赞。 安装后自带可以播放vga格式的播放器。 转载于:htt…

企业生产场景如何对CentOS进行分区

前言:我们买房子时,会考虑1室1厅,2室1厅,或3室2厅......!那么具体如何选,是要看手中的money和家庭的人口数量。同理,服务器操作系统在分区时也是如此,到底分3个区,4个区&…

获取当前文件所在路径

代码 1 unitUnit1;2 interface3 uses4 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,5 Dialogs, StdCtrls;6 type7 TForm1 class(TForm)8 Button1: TButton;9 Button2: TButton;10 procedureButton1Click(Sender: TObject);11 procedureButton2…