最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

关于ORA-01002读取违反顺序

来源:动视网 责编:小采 时间:2020-11-09 11:27:50
文档

关于ORA-01002读取违反顺序

关于ORA-01002读取违反顺序:关于ORA-01002 读取违反顺序,end loop 进行了循环取值,但是在JDBC调用存储过程时,只需要返回一个结果集(cursor)就行,此时就 今天,运行自己写的JDBC调用存储过程时遇到了如下错误: ORA-01002 读取违反顺序 在网上百般寻找,大多数给出的建议是设置s
推荐度:
导读关于ORA-01002读取违反顺序:关于ORA-01002 读取违反顺序,end loop 进行了循环取值,但是在JDBC调用存储过程时,只需要返回一个结果集(cursor)就行,此时就 今天,运行自己写的JDBC调用存储过程时遇到了如下错误: ORA-01002 读取违反顺序 在网上百般寻找,大多数给出的建议是设置s


关于ORA-01002 读取违反顺序,end loop 进行了循环取值,但是在JDBC调用存储过程时,只需要返回一个结果集(cursor)就行,此时就

今天,运行自己写的JDBC调用存储过程时遇到了如下错误:
ORA-01002 读取违反顺序
在网上百般寻找,大多数给出的建议是设置sql自动提交为false:cn.setAutoCommit(false);
但是这不是我的错误所在,我最后解决的时候也没有进行设置。
我的存储过程如下:
create or replace procedure tag(outs out sys_refcursor) is
allout sys_refcursor;
id varchar2(16);
mid varchar2(16);
tty varchar2(16);
cty varchar2(16);
tid varchar2(16);
tna varchar2(16);
tva varchar2(16);
tsi varchar2(16);
tti varchar2(16);
pid varchar2(16);
nex varchar2(16);
gra char(4);
begin
open allout for select id,module_id,tag_type,control_type,tag_id,tag_name,tag_value,tag_size,tag_title,parent_id,next,grade
into id,mid,tty,cty,tid,tna,tva,tsi,tti,pid,nex,gra from t_tag ;
--loop
--fetch allout into id,mid,tty,cty,tid,tna,tva,tsi,tti,pid,nex,gra;
--exit when allout%notfound;
--dbms_output.put_line(allout%rowcount||' '||id||' '||mid||' '||tty||' '||cty||' '||tid||' '||tna||' '||tva||' '||tsi||' '||tti||' '||pid||' '||nex||' '||gra);
--end loop;
outs:=allout;
end tag;
JDBC如下:
cn = DBFactory.getconn();
//cn.setAutoCommit(false);
//System.out.println("创建声明");
cst = cn.prepareCall("{call tag(?)} ");
System.out.println("执行sql");
cst.registerOutParameter(1, Oracle.jdbc.OracleTypes.CURSOR);
cst.execute();
System.out.println("execute成功");
rs = (ResultSet) cst.getObject(1);
System.out.println(rs);
while(rs.next()){
}
我的错误在于所写存储过程中,由于想在pl-sql中运行出结果,所以采用了
loop
fetch into
end loop 进行了循环取值,但是在JDBC调用存储过程时,只需要返回一个结果集(cursor)就行,,此时就报“ 读取违反顺序”的错,解决办法:去掉loop....end loop 相应代码。

更多Oracle相关信息见Oracle 专题页面 ?tid=12

文档

关于ORA-01002读取违反顺序

关于ORA-01002读取违反顺序:关于ORA-01002 读取违反顺序,end loop 进行了循环取值,但是在JDBC调用存储过程时,只需要返回一个结果集(cursor)就行,此时就 今天,运行自己写的JDBC调用存储过程时遇到了如下错误: ORA-01002 读取违反顺序 在网上百般寻找,大多数给出的建议是设置s
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top