• 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 

    中智软件科技培训学校是一家立足湖南本土的创新教育机构,是湖南本土唯一一家专注于提供JavaEE软件开发、Oracle、微信app开发、安卓”四大热门软件人才的实效教育机构。
  • 相关阅读:
    读《大道至简》第二章有感
    读大道至简之感
    C#学习笔记二:并行编程基础:在 PLINQ 和 TPL 中的 Lambda 表达式
    C#学习笔记一:委托、匿名函数、Lambda 表达式
    VS2013 最常用 和 不是最常用的快捷键备忘
    EntityFramework初上手
    C#的值类型,引用类型,栈,堆,ref,out
    python批量下载图片
    django部署for新浪SAE
    Linux下安装搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/xiaohejava/p/1608046.html
Copyright © 2020-2023  润新知