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 类型和类型名称。

发布了12 篇原创文章 · 获赞 1 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章