在Java中获取sys_Refcurson的结果

在Java中获取sys_Refcurson的结果,java,oracle,stored-procedures,Java,Oracle,Stored Procedures,我有一个使用sys\u Refcursor的函数 create or replace function get_employee (p_loc in number) return sys_refcursor as l_rc sys_refcursor; begin open l_rc for select a.first_name, a.last_name, b.department_name from employees a, depa

我有一个使用sys\u Refcursor的函数

create or replace function get_employee
  (p_loc in number)
  return sys_refcursor
as  
 l_rc sys_refcursor;
begin
  open l_rc
   for select a.first_name, a.last_name, b.department_name 
     from employees a, 
          departments b 
    where a.department_id=b.department_id 
      and location_id=p_loc;

 return l_rc; 
end;
并在SQL developer中运行此功能

select (get_employee(5)) from dual;
我用的是Java语言

strSql+="select (get_employee(5)) from dual";

        resultSet = selectStatement.executeQuery(strSql);


        while (resultSet.next()) {



            System.out.println("here is the " + resultSet.getString(1) );
            System.out.println("here is the " + resultSet.getString(2) );


        }
但是上面的代码将结果集返回为Null

您能告诉我用Java检索该函数结果值的方法吗


提前感谢

您无需执行查询即可获取ref cusros

create or replace function get_refcursor
return sys_refcursor
is
 c sys_refcursor;
begin
  open c for select 1 x from dual;
  return c;
end;


    DriverManager.registerDriver ( new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@****:1521:***","***","***");

    OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("{ ? = call get_refcursor }"); ;
    cstmt.registerOutParameter(1, OracleTypes.CURSOR);
    cstmt.execute();
    ResultSet rs = (ResultSet)cstmt.getObject(1);
    while(rs.next()) {
        System.out.println('Result: '+rs.getBigDecimal(1));
    }
    rs.close();
    cstmt.close();

Result: 1

还有德米特里。。是否可以根据结果集的名称获取结果集?例如:rs.getString(“FirstName”)是的,当然。您可以在ResultSet的getter方法中使用列名,请参见