有一次我在[url=http://www.beidaqingniao.org]北大青鸟[/url]上课时老师讲到啦java连接oracle数据库调用返回列表的oracle存储过程,觉得很实用所以给大家分享一下。希望给大家带来帮助。

文章转载自网管之家:http://www.bitscn.com/pdb/oracle/201010/191847.html
由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,
1,  建一个程序包。如下:

CREATE OR REPLACE PACKAGE TESTPACKAGE   AS  TYPE Test_CURSOR IS REF CURSOR;  end TESTPACKAGE; 2,建立存储过程,存储过程为:

CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS   BEGIN       OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;  END TESTC; 可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。
在java里调用时就用下面的代码:

package com.hyq.src;  import java.sql.*;  import java.io.OutputStream;  import java.io.Writer;  import java.sql.PreparedStatement;  import java.sql.ResultSet;  import oracle.jdbc.driver.*;   public class TestProcedureTHREE {     public TestProcedureTHREE() {     }     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 hyq.testc(?) }");         proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);         proc.execute();         rs = (ResultSet)proc.getObject(1);          while(rs.next())         {             System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");         }       }       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) {         }       }     }  }  

通过本文希望给大家带来帮助,另外本文在撰写时还参考啦[url]http://www.beidaqingniao.org[/url]感兴趣的同学可以在下面提到,与大家交流。