龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

java连接数据库调用有返回值的oracle存储过程

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
java连接oracle数据库,应该如何调用有返回值的 oracle 存储过程呢?下面就为您介绍java连接数据库调用有返回值的oracle存储过程的方法,供您参考。 有返回值的oracle存储过程(非列表)

java连接oracle数据库,应该如何调用有返回值的oracle存储过程呢?下面就为您介绍java连接数据库调用有返回值的oracle存储过程的方法,供您参考。

有返回值的oracle存储过程(非列表)
存储过程为:

  1. CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2)   AS  
  2. BEGIN   
  3.    SELECT INTO PARA2 FROM TESTTB WHERE I_IDPARA1;   
  4. END TESTB; 

在java里调用时就用下面的代码:

  1. package com.hyq.src;  
  2.  
  3. public class TestProcedureTWO {  
  4.    public TestProcedureTWO() {  
  5.    }  
  6.    public static void main(String[] args ){  
  7.      String driver = "oracle.jdbc.driver.OracleDriver";  
  8.      String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";  
  9.      Statement stmt = null;  
  10.      ResultSet rs = null;  
  11.      Connection conn = null;  
  12.      try {  
  13.        Class.forName(driver);  
  14.        conn =   DriverManager.getConnection(strUrl, " hyq ", " hyq ");  
  15.        CallableStatement proc = null;  
  16.        proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");  
  17.        proc.setString(1, "100");  
  18.        proc.registerOutParameter(2, Types.VARCHAR);  
  19.        proc.execute();  
  20.        String testPrint = proc.getString(2);  
  21.        System.out.println("=testPrint=is="+testPrint);  
  22.      }  
  23.      catch (SQLException ex2) {  
  24.        ex2.printStackTrace();  
  25.      }  
  26.      catch (Exception ex2) {  
  27.        ex2.printStackTrace();  
  28.      }  
  29.      finally{  
  30.        try {  
  31.          if(rs != null){  
  32.            rs.close();  
  33.            if(stmt!=null){  
  34.              stmt.close();  
  35.            }  
  36.            if(conn!=null){  
  37.              conn.close();  
  38.            }  
  39.          }  
  40.        }  
  41.        catch (SQLException ex1) {  
  42.        }  
  43.      }  
  44.    }  
  45. }  
  46.  
  47. }  

注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。

以上就是oracle连接数据库调用有返回值的oracle存储过程的方法介绍。

oracle RMAN备份的优化

使用RMAN进行Oracle备份

Oracle EXP/IMP备份简介

Oracle数据库备份的重要性

Oracle控制文件的恢复

精彩图集

赞助商链接