Java调用Oracle动态游标

来源:互联网 发布:听评书软件 编辑:程序博客网 时间:2024/05/16 06:00
  1. //Oracle存储过程创建如下:
  2. Create or REPLACE PROCEDURE TEST_PROCEDURRE(
  3.      P_USER_ID_I          IN   VARCHAR2              --接收输入参数
  4. )
  5. RETURN    SYS_REFCURSOR
  6. AS
  7.      P_RESULT_SET_O          SYS_REFCURSOR; --返回游标
  8.      X_SQL VARCHAR2(200);
  9. BEGIN
  10.       X_SQL :='select user_id,user_name,email from user_mst where user_id like ''%' || P_USER_ID_I ||'%''';   --生成SQL语句
  11.       OPEN P_RESULT_SET_O FOR X_SQL;
  12.       RETURN P_RESULT_SET_O;    --返回游标
  13. END TEST_PROCEDURRE;
  14. //Java调用代码如下:
  15. CallableStatement cstmt = null;
  16. ResultSet rs = null;
  17. try {
  18. String callSql = "{? = call TEST_PROCEDURRE(?)}";
  19. cstmt = conn.prepareCall(callSql);
  20.     
  21. cstmt.setString(2, "userName");
  22. cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
  23. cstmt.execute();
  24. rs = (ResultSet) cstmt.getObject(1);
  25. if (rs != null) {
  26.        System.out.print("usercd");
  27.        System.out.print("userName");                
  28.        System.out.println("EMAIL");
  29.        while (rs.next()) {        
  30.     System.out.print(rs.getString(1)+"   ");
  31.     System.out.print(rs.getString(2)+"   ");                
  32.     System.out.println(rs.getString(3));
  33.        }    
  34. }