oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数。有一个例子:
import java.sql.*;
import oracle.jdbc.driver.*;
...........................
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "system", "password");
CallableStatement st = conn.prepareCall(
"{call getemps(?)}");
st.registerOutParameter(1,OracleTypes.CURSOR);
st.execute();
ResultSet r = (ResultSet) st.getObject(1);
while (r.next()) {
//todo
}
}
catch (SQLException ex) {
................
}
create or replace package types
as
type cursorType is ref cursor;
end;
/
create or replace procedure getemps( p_cursor in out types.cursorType )
as
begin
open p_cursor for select ename, empno from emp order by ename;
end;
/
具体参数你自己修改一下应该可以运行