`

Oracle 存储过程JAVA调用存储过程 游标使用

阅读更多

打开 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

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    JAVA调用ORACLE存储过程游标使用

    讲有关java如何调用ORACLE存储过程以及游标使用,它只包含JAVA调用ORACLE存储过程游标使用(上),还有JAVA调用ORACLE存储过程游标使用(上),

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

    NULL 博文链接:https://fruitking.iteye.com/blog/1447333

    java调用oracle存储过程(游标)相关

    NULL 博文链接:https://liuzidong.iteye.com/blog/717050

    用java调用oracle存储过程总结

    本文用一个案例系统的介绍了怎样用java调用oracle存储过程

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查

    Java调用存储过程(包含游标的)两种方法

    这是自己这段时间学习Oracle数据库的一些有关存储过程和Java中调用存储过程的学习心得。

    oracle存储过程学习实例文档 创建调用

    oracle存储过程创建 游标的使用等等 java调用存储过程

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    NULL 博文链接:https://vernonchen163.iteye.com/blog/1902788

    自学oracle存储过程

    用 Java 调用 Oracle 存储过程总结.................................................................................................. 6 一、 无返回值的存储过程...............................................

    21天学通Oracle

    8.3.3 调用程序包中的函数/存储过程 157 8.3.4 程序包中的变量 158 8.4 本章实例 159 8.5 本章小结 161 8.6 习题 161 …… 第9章 游标(教学视频:36分钟) 162 第10章 触发器(教学视频:58分钟) 178 第11...

    Oracle11g从入门到精通2

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    Oracle11g从入门到精通

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    pl/sql入门教程

    plsql入门 游标变量 Oracle EXTRACT()函数 用Java调用存储过程 ORACLE用户常用数据字典的查询使用方法

    Java面试宝典2020修订版V1.0.1.doc

    19、用JDBC如何调用存储过程 69 20、JDBC中的PreparedStatement相比Statement的好处 71 21、写一个用jdbc连接实例。 71 22、ArrayList和Vector的区别? 73 23、List、Set和Map的区别? 74 24、Collection 和 ...

    JAVA面试题最全集

    Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都...

    Oracle 10g 开发与管理

    2.调用存储过程 72 3.修改(替换同名的存储过程) 73 4.参数 73 (1)In 参数:向过程传入一个值 73 (2)Out参数: 73 (3)In Out参数: 74 (4)默认值 74 5.局部变量和子过程 74 8.2函数(function) 75 1.创建 75...

Global site tag (gtag.js) - Google Analytics