zoukankan      html  css  js  c++  java
  • Oracle数据库基本操作 (五) —— 使用java调用存储过程

     一、环境准备

     登录Oracle数据库scott账号,利用emp进行操作。

    1、创建 proc_getyearsal 存储过程

    1 -- 获取指定员工年薪
    2 create or replace procedure proc_getyearsal(vempno in number,vyearsal out number)
    3 is
    4        
    5 begin
    6    select sal*12+nvl(comm,0) into vyearsal from emp where empno=vempno;
    7 end;

     2、创建 proc_gettemps 存储过程(游标)

    1 create or replace procedure proc_gettemps(vemps out sys_refcursor)
    2 is
    3 BEGIN
    4 open vemps for select * from emp where deptno = 20;
    5 end;

    3、导入数据库驱动包 —— ojdbc14.jar

     二、java代码示例

     1 package com.pri.test;
     2 
     3 public class TestProcedure {
     4 
     5   /*
     6     java调用存储过程模板(一)
     7     获取单值操作
     8   */
     9     @Test
    10     public void test01() throws Exception {
    11         //1.注册驱动
    12         Class.forName("oracle.jdbc.driver.OracleDriver");
    13         //2.获取连接
    14         String url = "jdbc:oracle:thin:@10.211.55.29:1521/orcl";
    15         String user = "zhangsan";
    16         String password = "zs123";
    17         Connection conn = DriverManager.getConnection(url, user, password);
    18         //3.获取执行SQL的对象
    19         String sql = "{call proc_getyearsal(?,?)}";
    20         CallableStatement callableStatement = conn.prepareCall(sql);
    21         //3.1 设置输出参数
    22         callableStatement.setInt(1,7369);
    23         //3.2 注册输出类型
    24         callableStatement.registerOutParameter(2, Types.DOUBLE);
    25         //4.执行SQL
    26         callableStatement.execute();
    27         //5.执行结果
    28         double yearsal = callableStatement.getDouble(2);
    29         System.out.println("年薪:"+yearsal);
    30         //6.释放资源
    31         callableStatement.close();
    32         conn.close();
    33     }
    34   
    35   /*
    36      java调用存储过程模板(二)
    37     多行记录(游标)操作
    38   */
    39     @Test
    40     public void test03() throws Exception {
    41         //1.注册驱动
    42         Class.forName("oracle.jdbc.driver.OracleDriver");
    43         //2.获取连接
    44         String url = "jdbc:oracle:thin:@10.211.55.29:1521/orcl";
    45         String user = "zhangsan";
    46         String password = "zs123";
    47         Connection conn = DriverManager.getConnection(url, user, password);
    48         //3.获取执行SQL的对象
    49         String sql = "{call proc_gettemps(?)}";
    50         CallableStatement callableStatement = conn.prepareCall(sql);
    51         //3.1 注册输出类型
    52         callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
    53         //4.执行SQL
    54         callableStatement.execute();
    55         //5.获取结果
    56         System.out.println(callableStatement.getClass().getName());
    57 //        T4CCallableStatent call2 = () callableStatement;
    58         OracleCallableStatement call2 = (OracleCallableStatement) callableStatement;
    59         ResultSet rs = call2.getCursor(1);
    60 
    61         while(rs.next()){
    62             System.out.println(rs.getObject("empno"));
    63             System.out.println(rs.getObject("ename"));
    64             System.out.println(rs.getObject("sal"));
    65             System.out.println("------------------------");
    66         }
    67         //6.释放资源
    68         rs.close();
    69         callableStatement.close();
    70         conn.close();
    71     }
    72 
    73 }
  • 相关阅读:
    C#生成唯一值的方法汇总
    WCF中可以使用SVCUtil.exe生成客户端代理类和配置文件
    C# 打开钱箱支持北洋、佳博、爱普生
    MVC使用 Elmah 日志记录组件
    C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一)
    C# Gma.QrCodeNet生成二维码
    支付宝支付开发——当面付条码支付和扫码支付
    微信支付四大支付模式分别有哪些区别?
    web安全测试---AppScan扫描工具
    SVN 使用学习记录
  • 原文地址:https://www.cnblogs.com/gdwkong/p/8516161.html
Copyright © 2011-2022 走看看