在Java中获取sys_Refcurson的结果
我有一个使用sys\u Refcursor的函数在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
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方法中使用列名,请参见