1.oracle下
假定存储过程名字为 sp_yourprocedurename,有两个参数 CallableStatement cstmt = con.prepareCall("{call sp_yourprocedurename(?,?}"); 
cstmt.registerOutparameter(2,java.sql.Types.FLOAT); 
cstmt.setint(1,parameter1); 
cstmt.execute(); 
out.println("Procedure output is :"+cstmt.getFloat(2));   2.
strsql="execute proc...()"
然后用stmt.execute()就可以了!

解决方案 »

  1.   

    谢谢楼上的兄弟,可我就是按照你所说的第2种方法来的也不行。
    我的SqlBean是个执行数据库操作的javabean.
      

  2.   

    应该是SqlBean.execute(),给你一个例子吧,你参照着改改看行不行。
     //连接数据库
     Class.forName(driver);
     conn=DriverManager.getConnection(url,user_name,password);
     stmt=conn.createStatement();
     //声明存储过程,该过程前三个参数是in,第四个是out的过程执行出错信息.
     ls_sql="{call pkg_create_report.pro_create_zbtjb(?,?,?,?)}";
     pstmt=conn.prepareCall(ls_sql);

     //赋参数值
    pstmt.setString(1,ls_bfkssq);
    pstmt.setString(2,ls_efkssq);
    pstmt.setString(3,ls_flag);
    pstmt.registerOutParameter(4, java.sql.Types.VARCHAR);//返回错误信息 //执行过程
     boolean lb_re=pstmt.execute();
     
     if (pstmt.getString(4)==null)
        {ls_err="过程调用成功!";
        }
        else
        {
         ls_err="过程调用失败错误!"+pstmt.getString(4);
          }
    //结束pstmt.close();
    stmt.close();
    conn.close();