關於ORA-01002 讀取違反順序

來源:互聯網
上載者:User

今天,運行自己寫的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 專題頁面 http://www.bkjia.com/topicnews.aspx?tid=12

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.