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;
/
具体参数你自己修改一下应该可以运行
博客介绍了在Oracle中,存储过程不能有返回值,若要返回记录集,可将游标类型作为输出参数。还给出了Java代码示例,通过JDBC连接Oracle数据库,调用存储过程获取记录集,同时给出了存储过程的创建代码。

403

被折叠的 条评论
为什么被折叠?



