oracle 存储过程使用 java

存储过程为:

CREATE OR REPLACE PROCEDURE SELTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2)  AS

BEGIN

   SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;

END TESTB;

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

public class TestProcedureTWO {

  public TestProcedureTWO() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, " hyq ", " hyq ");

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call SELTB(?,?) }");//调用存储过程

      proc.setString(1, "100");//这个是输入参数

      proc.registerOutParameter(2, Types.VARCHAR);//将指定序号位置的 OUT 参数注册为给定的 JDBC 类型

      proc.execute();

      String testPrint = proc.getString(2);//获取输出参数,就是输出参数所在的位置

      System.out.println("=testPrint=is="+testPrint);

    }

    catch (SQLException ex2) {

      ex2.printStackTrace();

    }

    catch (Exception ex2) {

      ex2.printStackTrace();

    }

    finally{

      try {

        if(rs != null){

          rs.close();

          if(stmt!=null){

            stmt.close();

          }

          if(conn!=null){

            conn.close();

          }

        }

      }

      catch (SQLException ex1) {

      }

    }

  }

}

 

}

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

 

registerOutParameter (int, int)

将指定序号位置的 OUT 参数注册为给定的 JDBC 类型。

registerOutParameter (int, int, int)

将指定序号位置的 OUT 参数注册为给定的 JDBC 类型和小数位数。

registerOutParameter (int, int, java.lang.String)

将指定序号位置的 OUT 参数注册为给定的 JDBC 类型和类型名称。

registerOutParameter (java.lang.String, int)

将具有指定名称的 OUT 参数注册为给定的 JDBC 类型。

registerOutParameter (java.lang.String, int, int)

将具有指定名称的 OUT 参数注册为给定的 JDBC 类型和小数位数。

registerOutParameter (java.lang.String, int, java.lang.String)

将具有指定名称的 OUT 参数注册为给定的 JDBC 类型和类型名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值