jabc调用pl/sql的包

原创 2012年03月29日 13:14:53
  • ProDemo.java
    package com.test;
    import java.util.Scanner;
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.CallableStatement;
    import java.sql.Types;
    public class ProDemo {
     private Connection conn;
     private Scanner sca = new Scanner(System.in);
     public ProDemo(){
      try {
       Class.forName("oracle.jdbc.driver.OracleDriver");
          conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle",
                                        "scott","tiger");
      } catch (ClassNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
     
     public void doProc(){
      //System.out.println("请输入插入的数据");
      //int depid = sca.nextInt();
      //String depname = sca.next();
      //int manid =  sca.nextInt();
        // int locid =  sca.nextInt();
      if(conn == null){
       System.out.println("连接失败");
       return;
      }
      
      String sql = "{call level_sal.pro_sal(?,?)}";
      try {
       CallableStatement cst = conn.prepareCall(sql);
       //cst.setInt(1, depid);
       //cst.setString(2, depname);
       //cst.setInt(3, manid);
       //cst.setInt(4, locid);
       cst.registerOutParameter(1,Types.INTEGER);
       cst.registerOutParameter(2,Types.INTEGER);
       
       //执行
       cst.execute();
       
       //获取out参数
      int count1 = cst.getInt(1);
       
       System.out.println("添加了 :" + count1);
       
      int count2 = cst.getInt(2);
       System.out.println("添加了 :" + count2);
       
       cst.close();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }finally{
       try {
        conn.close();
       } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
     }
    }
    
    Start.java-------------------------测试
    public class Start {
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      ProDemo demo = new ProDemo();
      demo.doProc();
     }
    }
    
    运行结果:
    添加了 :7
    添加了 :5
    包体
    create or replace package body level_sal
    IS
      PROCEDURE pro_sal( v1 OUT NUMBER, v2 OUT NUMBER) 
      IS
      CURSOR cur IS
      SELECT * FROM emp;
      va1 NUMBER := 0;
      va2 NUMBER := 0;
      BEGIN
      FOR rec IN cur LOOP
      IF rec.sal < 2000 THEN
      va1 := va1 +1;
      INSERT INTO tt1 VALUES(rec.empno,rec.ename,rec.job
                      ,rec.mgr,rec.hiredate,rec.sal,rec.comm,
                      rec.deptno);
      ELSIF rec.sal >= 2000 THEN
      va2 := va2 +1;
      INSERT INTO tt2 VALUES(rec.empno,rec.ename,rec.job
                      ,rec.mgr,rec.hiredate,rec.sal,rec.comm,
                      rec.deptno);  
                      
      END IF; 
      v1 := va1;
      v2 := va2; 
      END LOOP;
      
      END pro_sal;
    end level_sal;
    
    包头
    create or replace package level_sal is
      PROCEDURE pro_sal(
                                v1 OUT NUMBER,
                                v2 OUT NUMBER
                                             );
    end level_sal;
    
    

  • 相关文章推荐

    PL/SQL --> 动态SQL调用包中函数或过程

    动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句。最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量。但是对于系统自定义的包或用户自定的包...

    pl/sql9.01+注册机+汉化包

    • 2013年01月03日 20:16
    • 22.39MB
    • 下载

    pl/sql基础 游标、过程、函数、包、触发器(系统触发器)

    1.PL/SQL的介绍 pl/sql是什么 pl/sql是oracle在标准sql语言上的扩展。pl/sql不仅允许嵌入sq...

    PL/SQL编程之七-包

    7.1  程序包简介     程序包(PACKAGE,简称包)是一组相关过程、函数、变量、常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来标识包。它具有面向对象...

    PL/SQL Developer汉化包

    • 2010年11月24日 12:47
    • 2.65MB
    • 下载

    PL/SQL Developer V8.0.4.1514安装包

    • 2011年06月26日 13:09
    • 17.51MB
    • 下载

    PL/SQL-包

    包可将一些有联系的对象放在其内部。任何能在块定义部分出现的对象都可以在包中出现。这些对象包括存储过程、函数、游标、自定义的类型(例如PL/SQL表和记录)和变量。  我们可以在其它的PL/SQL块中...
    • kb5706
    • kb5706
    • 2012年05月15日 18:21
    • 2435
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:jabc调用pl/sql的包
    举报原因:
    原因补充:

    (最多只允许输入30个字)