在JAVA里如何調用ORACLE的PL/SQL包

我正好做过一个测试:
package dbtest;
//import java.io.IOException;
import java.sql.*;
//import oracle.jdbc.*;

public class oraTest {
 public static void main (String args []) {
  int i=0;
 try
   {
     DriverManager.registerDriver ( new oracle.jdbc.driver.OracleDriver());
     Connection conn = DriverManager.getConnection
     ("jdbc:oracle:thin:@192.168.0.115:1521:ORA8", "system", "orasystem");
     Statement stmt = conn.createStatement();
     ResultSet rset = stmt.executeQuery (
       "select BANNER from SYS.V_$VERSION"
     );
     while (rset.next())
        System.out.println (rset.getString(1));   // Print col 1
     CallableStatement cs = conn.prepareCall("{call ptest.test1(?,?)}");
     cs.setInt(1,1);//输入参数
     System.out.println(oracle.jdbc.OracleTypes.CURSOR);
     cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);//输出参数
     /*
     for( i=-100000;i<0;i++)
     {
     try {
     cs.registerOutParameter(2,i);//输出参数
     cs.execute();
     }
     catch(Exception e){
   //System.out.println(i);
      continue;
     }
      System.out.println(i);
       break;
     }
     */
  System.out.println(i);
   cs.execute();
     ResultSet rs = (ResultSet)cs.getObject(2);
     while (rs.next())
    System.out.println (rs.getString(1));   // Print col 1
     stmt.close();
     }
     catch(Exception e){
   System.out.println(e);
   
     }
 }
}

----------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE ptest AS
  type c_cor is ref cursor;

  PROCEDURE test1(i_in IN NUMBER,c_out OUT c_cor);
END ptest;
/
CREATE OR REPLACE PACKAGE BODY ptest AS
  PROCEDURE test1(i_in IN NUMBER,c_out OUT c_cor) as
  begin
     OPEN c_out FOR select 888 aval from dual;
  end test1;
END ptest;
/

---------------------------------------------------------------
结果:
Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production
CORE Version 4.0.5.0.0 - Production
TNS for Linux: Version 8.0.5.0.0 - Production
NLSRTL Version 3.3.2.0.0 - Production
-10
0
888

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值