create or replace procedure test.query_test_proc(
tid number,rs out SYS_REFCURSOR
)
as
begin
if tid==0 then
open rs for select * from tmenu where menupid=tid;
end if;
end;调用仔储过程
cstmt=conn.prepareCall("{call query_test_proc(?,?)}");cstmt.setInt(1,0);
//cstmt.registerOutParameter(1,0);
cstmt.registerOutParameter(2,OracleTypes.CURSOR);
cstmt.execute();ResultSet rs = (ResultSet)cstmt.getObject(1);
while(rs.next()){
System.out.println(rs.getInt(1));
}报错啊 不太会用这东西,要怎么写才对呢,才能正确调用仔储过程,没有分了,帮帮忙吧
tid number,rs out SYS_REFCURSOR
)
as
begin
if tid==0 then
open rs for select * from tmenu where menupid=tid;
end if;
end;调用仔储过程
cstmt=conn.prepareCall("{call query_test_proc(?,?)}");cstmt.setInt(1,0);
//cstmt.registerOutParameter(1,0);
cstmt.registerOutParameter(2,OracleTypes.CURSOR);
cstmt.execute();ResultSet rs = (ResultSet)cstmt.getObject(1);
while(rs.next()){
System.out.println(rs.getInt(1));
}报错啊 不太会用这东西,要怎么写才对呢,才能正确调用仔储过程,没有分了,帮帮忙吧
你的存储过程就有错....
if tid==0 then 改成 if tid=0 then
错误信息
line 1, column 7:
PLS-00905: object TEST.QUERY_TEST_PROC is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
说你的存储过程编译出错...
而且你的存储过程很少奇怪.. tid=0 才去执行OPEN,又加了menupid=tid相当于menupid=0,
if tid=0 then
open rs for select * from tmenu where menupid=tid;
end if;