大分1送上,关于在java中调用存储过程的问题(100分)

  • 主题发起人 主题发起人 kikiyang
  • 开始时间 开始时间
K

kikiyang

Unregistered / Unconfirmed
GUEST, unregistred user!
我在java里(jdk1.2.2,运行于resin1.3)调用oracle的一个存储过程PROCEDURE PRO_GENSHEETNO_TS(i_sheetype in  varchar,o_sheetno  out varchar),代码如下:public void execProc()//调用含参数的存储过程
{
try{
cs=conn.prepareCall("{call PRO_GENSHEETNO_TS (i_sheettype,o_sheetno)}");
cs.registerOutParameter(2, Types.VARCHAR);
cs.setString(1,"APPSHEET");
String res = cs.getString(2);
   System.out.print(res);
    }
    catch (Exception e) {
     // e.printStackTrace();
      System.out.println(e.toString());
     
     
}可是为什么总是报错"无效的列索引'呢?请各位告诉我啊....别告诉我用sqlj啊...

 
这一句有问题:
cs=conn.prepareCall("{call PRO_GENSHEETNO_TS (i_sheettype,o_sheetno)}");
改为
cs=conn.prepareCall("{call PRO_GENSHEETNO_TS (?,?)}");
还有,你的csv好象没有执行,加上
cs.executeUpdate();
然后再取结果。
 
"无效的列索引'
eguy 的回答正确吗?
 
靠,没问号又不执行,你当JavaVM是你老公什么都知道啊?
 
你代码应该改成:
{
try{
cs=conn.prepareCall("{call PRO_GENSHEETNO_TS (?,?)}");
cs.registerOutParameter(2, Types.VARCHAR);
cs.setString(1,"APPSHEET");
cs.executeUpdate();
String res = cs.getString(2);
   System.out.print(res);
    }
    catch (Exception e) {
     // e.printStackTrace();
      System.out.println(e.toString());
     
 
多人接受答案了。
 
后退
顶部