存储过程:
create or replace procedure testRs(p_cur out sys_refcursor)
as
begin
open p_cur for
select name from mytable;
end; java调用代码:
CallableStatement proc = conn.prepareCall("{call getResult(?)}");
proc.registerOutParameter(1, Types.OTHER);
proc.execute(); --------------------------
运行时,报“Types.OTHER”处:java.sql.SQLException: 无效的列类型
那么“Types.OTHER”处应该用什么替换呢
create or replace procedure testRs(p_cur out sys_refcursor)
as
begin
open p_cur for
select name from mytable;
end; java调用代码:
CallableStatement proc = conn.prepareCall("{call getResult(?)}");
proc.registerOutParameter(1, Types.OTHER);
proc.execute(); --------------------------
运行时,报“Types.OTHER”处:java.sql.SQLException: 无效的列类型
那么“Types.OTHER”处应该用什么替换呢
一般name是varchar型的,這里應該寫的是Types.VARCHAR。
這要根據你數據庫里面你自己定義的類型來寫的
is
begin
open p_cursor FOR
select 1 as A from dual
union all
select 2 as A from dual;
end test;
public static void main(String[] args) throws SQLException {
Connection conn = JdbcConnectionPool.mainConnection();
CallableStatement stat =conn.prepareCall("{call test(?)}");
stat.registerOutParameter(1,oracle.jdbc.driver.OracleTypes.CURSOR);
stat.executeQuery();
ResultSet rs = (ResultSet)stat.getObject(1);
while (rs.next()){
System.out.println(rs.getString(1));
}
rs.close();
stat.close();
conn.close();
}