zoukankan      html  css  js  c++  java
  • JDBC 访问 Oracle9i 存储过程

           p2 IN number,
           p3 OUT number);
     
       FUNCTION myf_mult
         ( p1 IN number,
           p2 IN number)
         RETURN  number;
      
       FUNCTION myf_rtnrcd
         ( p_deptno in number )
         RETURN t_rec;--此函数返回类型为Cursor

    END; -- Package spec

    PACKAGE BODY MYTESTPKG1
    IS
       PROCEDURE my_add
        ( p1 in number ,
          p2 in number,
          p3 out number)
        IS
       BEGIN
          p3:=p1+p2;
       END;

       function myf_mult
       ( p1 in number,
         p2 in number)
         return number
         is
         p3 number(8);
         begin
            p3:=p1*p2;
            return p3;
         end;
        
       function myf_rtnrcd
       ( p_deptno in number )
       return t_rec
       is
       myrec t_rec;--定义Cursor类型的变量
       begin
           open myrec for select * from dept where deptno=p_deptno;
           return myrec;--返回一个Cursor变量
       end;
        
    END;

    二、JDBC程序实例:

    1. OracleConfig.java :

    package com.JerryZhang.dbms;

    public class oracleConfig
    {
      private String drivername="oracle.jdbc.driver.OracleDriver";
      private String dburl="jdbc:oracle:thin:@localhost:1521:ora901";
      private String user="scott";
      private String password="tiger";
     
     
      public oracleConfig()
      {
      }

      public String getDriverName(){
        return drivername;
      }
      public String getDbURL(){
        return dburl;
      }
      public String getUser(){
        return user;
      }
      public String getPassword(){
        return password;
      }
    }

    2. Class1.java :

    package com.JerryZhang.dbms;
    import java.sql.*;
    import oracle.jdbc.OracleTypes; //需要在class path 中加入 oracle lib: class12.jar, nls_charset12.jar
    public class Class1
    {
      public Class1()
      {
      }
      public static void main(String args[]) throws Exception {
        oracleConfig oracleconfig=new oracleConfig();
        Connection conn;
        Statement stmt;
        ResultSet rs;
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn=DriverManager.getConnection(oracleconfig.getDbURL(),oracleconfig.getUser(),oracleconfig.getPassword());


        // Statement 
        stmt=conn.createStatement();
        rs=stmt.executeQuery("select * from dept");
        while(rs.next()){
          System.out.println(rs.getString(2));
        }

        // CallableStatement 1 - 调用一个含有out参数的procedure
        CallableStatement cs=conn.prepareCall("{call mytestprc10(?,?,?)}");
        cs.setString(1,"10");
        cs.setString(2,"20");
        cs.registerOutParameter(3,Types.INTEGER);//注意此处对返回参数的设置方法
        
        cs.executeUpdate();
        int t=cs.getInt(3);
        System.out.println("CallableStatement 1 :"+t);
        cs.close();

        //CallableStatement 2 - 调用一个返回数值型参数的函数
        CallableStatement cs2=conn.prepareCall("{?=call mytestpkg1.myf_mult(?,?)}");
        cs2.registerOutParameter(1,Types.INTEGER);//注意此处对返回参数的设置方法
        cs2.setInt(2,2);
        cs2.setInt(3,3);
        cs2.executeUpdate();
        int t2=cs2.getInt(1);
        System.out.println("CallableStatement 2 : " + t2);
        cs2.close();
       
        //CallableStatement 3 - 调用一个返回Cursor类型参数的函数
        CallableStatement cs3=conn.prepareCall("{?=call mytestpkg1.myf_rtnrcd(?)}");
        cs3.registerOutParameter(1, OracleTypes.CURSOR);//注意此处对返回参数的设置方法,和上面的有所不同
        cs3.setInt(2,20);
        cs3.executeUpdate();
        ResultSet rs3=(ResultSet)cs3.getObject(1);
        rs3.next();
        System.out.println("CallableStatement 3 : " + rs3.getString(2));
        rs3.close();
        cs3.close();


          rs.close();
          stmt.close();
          conn.close();
        }
      }

  • 相关阅读:
    第一次结对编程作业
    第一次个人编程作业
    获取file中字段,写入到TXT文件中
    通过file中的字段查询MySQL内容
    MySQL常用语句
    MySQL乱码问题
    脚本数据编码格式转换
    mysql 常用命令操作
    thinkphp项目 Class 'finfo' not found
    POJ3255--次短路
  • 原文地址:https://www.cnblogs.com/lds85930/p/842567.html
Copyright © 2011-2022 走看看