2013-01-02 68 views
2

我正在使用CLOB數據類型作爲輸出參數和其他參數調用DB2 SQL存儲過程(位於大型機中)。在SQL存儲過程中使用CLOB數據類型

CREATE PROCEDURE ACT_GETAUDIT01          
     (               
     IN IN_ID   CHAR(12) FOR SBCS DATA CCSID EBCDIC 
     ,IN IN_CURSOR_ID  INTEGER        
     ,IN IN_PAGING_TS  CHAR(26) FOR SBCS DATA CCSID EBCDIC 
     ,OUT OUT_AUDTDATA CLOB FOR SBCS DATA CCSID EBCDIC   
     ) 


    LANGUAGE SQL             
    READS SQL DATA            

當從Java調用這個存儲過程,我得到的​​聲明如下例外。

CallableStatement cs = conn.prepareCall(callstmt); 

boolean resultsavailable = cs.execute(); 

異常在線程 「主」 java.lang.IllegalArgumentException異常:陰性初始大小:-5
在java.io.ByteArrayOutputStream中(未知來源)
在com.ibm.db2。 .jcc.b.ba.a(ba.java:780)
at com.ibm.db2.jcc.b.bd.d(bd.java:1961)
at com.ibm.db2.jcc.b .bd.l(bd.java:378)
at com.ibm.db2.jcc.b.bd.e(bd.java:91)
at co m.ibm.db2.jcc.bre(r.java:108)
at com.ibm.db2.jcc.b.bs.i(bs.java:191)
at com.ibm.db2.jcc。 c.cw.o(cw.java:1213)
at com.ibm.db2.jcc.c.cx.d(cx.java:2061)
at com.ibm.db2.jcc.c.cy. BQ(cy.java:145)
在com.ibm.db2.jcc.c.cy.execute(cy.java:128)

當我使用VARCHAR而不是CLOB,一切似乎都做工精細。我也已經正確地註冊了輸出參數。任何幫助非常感謝

+0

我還沒有在DB2上工作。如何指定CLOB輸出變量的大小? – shahkalpesh

+0

謝謝shahkalpesh。我嘗試給出OUT_AUDTDATA CLOB(5000)以獲得SBCS DATA CCSID EBCDIC。但是我再次遇到同樣的錯誤 – ssdimmanuel

+0

從異常情況來看,我只能解釋,當DB2驅動程序類方法正在處理Clob時,負索引會阻止它提取數據。我重複檢查了存儲過程以及調用的Java模塊是否設置了任何負值。但他們很乾淨。有人可以告訴我,如果我在分析中缺少某些東西 – ssdimmanuel

回答

相關問題