日期:2014-05-20  浏览次数:20611 次

请教关于jsp调用oracle存储过程出现的问题!万分感谢!
<%
String   no1=request.getParameter( "no1 ");
String   no2=request.getParameter( "no2 ");
int   no3=Integer.parseInt(request.getParameter( "no3 "));
CallableStatement   smt=null;
String   strSQL= " ";

Connection   con=dblink.connection();
strSQL   = "{call   vote02.PROC_FAKE_359(?,?,?)} ";
  smt=con.prepareCall(strSQL);

//设置输入参数
smt.setString(1,no1);
smt.setString(2,no2);
smt.setInt(3,no3);
smt.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);//登记输出参数
try{
boolean       flag       =   smt.execute(strSQL);
}catch(Exception   e){out.print( "err: "+e.toString());}
存储过程是可以运行的。但用jsp调用后报错:ORA-01008:   not   all   variables   bound

------解决方案--------------------
call vote02.PROC_FAKE_359(?,?,?)这里的sql命名只有三个参数,是sql写错了吧?
------解决方案--------------------
存储过程有几个参数就几个问号.少一个
------解决方案--------------------
strSQL = "{?=call vote02.PROC_FAKE_359(?,?,?)} ";
------解决方案--------------------
1. 应该是四个问号:strSQL = "{?=call vote02.PROC_FAKE_359(?,?,?,?)} ";
2. execute不加参数:boolean flag = smt.execute();
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html