//存储过程P_GET_ID(?,?),第一个为输入参数,第二个为输出参数    public static int createID()
    {
        int id=Math.abs((int)(new java.util.Date()).getTime());;
        try {
            Context ctx = new InitialContext();
            javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("ticsDS");
            Connection conn = ds.getConnection();
            CallableStatement cs=conn.prepareCall("{call P_GET_ID(?,?)}");
            cs.setString(1,"YHSCX_ZTB");
            cs.registerOutParameter(2,java.sql.Types.INTEGER);
            cs.execute();
            id=cs.getInt(2);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return id;
    }

解决方案 »

  1.   

    谢谢了!不过能不能解释一下,Context是什么类?registerOutParameter()是什么方法?执行存储过程具的体的步骤是什么?只看代码对初学者来说真的很难懂!
      

  2.   

    我的几个存储过程都是放在一个后缀名为sql的文件里的,当我调用时还要不要指定文件的名字?以下是代码:
    String pro = "{call pro_rs_bmxx_update(?,?,?,?,?}";
    cs = connection.prepareCall(pro,ResultSet.TYPE_SCROLL_INSENSITIVE
    ,ResultSet.CONCUR_UPDATABLE);
    cs.setString(1,bm.getBmbh());
    cs.setString(2,bm.getBmmc());
    cs.setString(3,bm.getLxdh());
    cs.setString(4,bm.getBmzg());
    cs.setString(5,bm.getBz());
    cs.executeUpdate();
    有错吗?抛出的异常是找不到输入表或查询!