CREATE OR REPLACE PROCEDURE p_getCount(a OUT SYS_REFCURSOR)
IS
BEGIN
OPEN a
FOR
SELECT table_name, last_analyzed FROM user_tables;
END ;
/
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleTypes;
public class JavaCallOracleProcedureEx {
public static void main (String[] args) throws ClassNotFoundException, SQLException {
callProcedure();
}
public static void callProcedure () throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.driver.OracleDriver" );
Connection conn = DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:orcl" ,"xxx" ,"xxx" );
CallableStatement cstmt = conn.prepareCall("{call p_getCount(?)}" );
cstmt.registerOutParameter(1 , OracleTypes.CURSOR);
cstmt.execute();
ResultSet rs = (ResultSet) cstmt.getObject(1 );
while (rs.next()) {
System.out.println(rs.getString(1 ));
}
}
}