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练习题一(基础)

Display the employee records who joins the department before their manager? SELECT emp1.* FROM EMPLO...
  • OnlyQi
  • OnlyQi
  • 2016年04月09日 11:47
  • 1701

PL/SQL之包的创建和使用处理

PL/SQL包创建,包体创建,包使用,函数,存储过程创建
  • yhl_jxy
  • yhl_jxy
  • 2016年02月29日 13:13
  • 1784

pl/sql学习笔记

oracle pl/sql 基础 PL/SQL笔记 PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句(COMMIT,ROLLBACK...
  • zndxlxm
  • zndxlxm
  • 2013年03月14日 14:55
  • 3138

PL/SQL 包头和包体

包用于逻辑组合相关的过程和函数,它由包规范和包体两部分组成,包规范用于定义公用的常量 变量,过程和函数,在SQL*PLUS中建立包规范可以使用CREATE PACKAGE命令。 实例如下: CRE...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2014年05月04日 09:34
  • 600

PL/SQL之DBMS_SQL程序包使用1

DBMS_SQL程序包 DBMS_SQL程序包是系统提供给我们的另一种使用动态SQL的方法。 使用DBMS_SQL包实现动态的SQL的步骤如下: (1)将要执行的SQL语句或一个语句块放到一个字符串变...
  • com185272358
  • com185272358
  • 2014年03月23日 19:32
  • 771

Oracle数据库之PL/SQL过程与函数

Oracle数据库之PL/SQL过程与函数PL/SQL块分为匿名块与命名块,命名块又包含子程序、包和触发器。过程和函数统称为PL/SQL子程序,我们可以将商业逻辑、企业规则写成过程或函数保存到数据库中...
  • zhliro
  • zhliro
  • 2015年06月17日 14:00
  • 1842

Oracle PL/SQL常用47个工具包

Oracle PL/SQL Utility Library PL/SQL 各种常用工具包代码,包含: PDF文件生成工具包 Excel文件生成、 RTF文件生成、 Zip文件压缩与解压、 ...
  • nansheng_su
  • nansheng_su
  • 2015年05月11日 20:53
  • 1172

pl/sql 过程、函数

pl/sql中proceduce过程与func函数均为一个程序块,是为完成特定功能的pl/sql语句集。并可接受三种类型的参数。 相同点在于: 1.均可使用out类型参数返回值。 2.均由声明、执行和...
  • Alexander_Frank
  • Alexander_Frank
  • 2016年04月11日 15:05
  • 723

oracle中pl/sql编程---存储过程,函数,触发器,包

1.pl/sql编程 pl/sql 指procedure language 过程化/sql. pl/sql 是oracle在标准的sql语句基础上扩展的一种对oracle数据库进行编程的的语言。 ...
  • zhengqiqiqinqin
  • zhengqiqiqinqin
  • 2013年06月13日 22:28
  • 1636

pl/sql存储过程的递归调用,树形数据的展示

--pl/sql的树状结构的存储与展示 drop table article; create table article( id number primary key, --id cont v...
  • u010689306
  • u010689306
  • 2016年06月01日 00:46
  • 1626
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jabc调用pl/sql的包
举报原因:
原因补充:

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