Oracle 存储过程输出参数返回游标的问题

IT回忆录 2013-10-07 05:14:54
我定义了一个Package如下

CREATE OR REPLACE Package Package1
as
Type AccountList_Cursor is ref cursor;
Procedure Proc1(yb out AccountList_Cursor);
end Package1;


在代码块中使用

declare
ybb Package1.AccountList_Cursor;
rowobj Account%rowtype;
begin
Package1.Proc1(ybb);
open ybb;
for rowobj in ybb loop
dbms_output.put_line(rowobj.account);
end loop;
end;

提示错误:
ORA-06550: 第 6 行, 第 3 列:
PLS-00382: 表达式类型错误
ORA-06550: 第 6 行, 第 3 列:
PL/SQL: SQL Statement ignored
ORA-06550: 第 7 行, 第 17 列:
PLS-00221: 'YBB' 不是过程或尚未定义
ORA-06550: 第 7 行, 第 3 列:
PL/SQL: Statement ignored

但我在jdbc中调用是可以的

String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user="scott";
String pwd="123";

Connection conn=null;
CallableStatement stmt=null;
ResultSet rs=null;
try{
conn= DriverManager.getConnection(url, user, pwd);
stmt=conn.prepareCall("{call Package1.Proc1(?)}");
stmt.registerOutParameter(1,OracleTypes.CURSOR);
stmt.execute();
rs=(ResultSet) stmt.getObject(1);
while(rs.next()){
System.out.println(rs.getString(1));
}

}catch(Exception ex){
ex.printStackTrace();
}finally{
if(rs!=null){
try{
rs.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
if(stmt!=null){
try{
stmt.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
...全文
113 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wushangjimo 2013-10-08
  • 打赏
  • 举报
回复
会不会是有书写错误

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧