存储过程:
CREATE procedure get_info @name varchar(50),@phone varchar(13),@addr varchar(50) 
as  
select *  
from mytest
GOJSP页面中的调用:
……
Connection conn = DriverManager.getConnection(url, username, password);  
String sql = "execute get_info";
Statement stmt = conn.createStatement();          
ResultSet res = stmt.executeQuery(sql); 
while(res.next())
……报错:
 [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]过程 'get_info' 需要参数 '@name',但未提供该参数。

解决方案 »

  1.   

    CallableStatement call = con.prepareCall("{execute get_info}");      
    ResultSet res = stmt.executeQuery();
    while(res.next())
    {}
    如果你的存储过程要给参  就该这样写 有几个参数给你个问号CallableStatement calll = con.prepareCall("{call execute get_info(?,?,?,?,?)}");
    下面是给值  你有实体表就可以写成这样  根据相应的表的属性来给值
    calll.setString(1,"值");
    calll.setInt(2, in.getAge());
    calll.setString(3, in.getSex());
    calll.setInt(4, in.getPhone());
    calll.setString(5, in.getAdress());
    ResultSet res = stmt.executeQuery();
    while(res.next())
    {}
      

  2.   

    java的存储过程没用过,顶一下!
      

  3.   

    你这样直接用sql去调用存储过程的话,会报错的,至于没有参数,你直接把存储过程中的@name varchar(50),@phone varchar(13),@addr varchar(50) 都去掉应该就可以了,在说你的存储过程中的这3个参数你都没有用到吗正确的调用存储过程,就采用4楼的做法。
      

  4.   

    这个真的是学习啊!
    我们老师说,你们现在不用这个存储过程,过一段时间再用!
    现在看了,原来就是这样!把sql语句变成调用存储过程就可以了!
    谢谢了!
    顶一下啊!
      

  5.   

    1.首先参数肯定出问题了。解决办法 楼上已经说明。2.建议这种代码不写在JSP中。请参照MVC架构
      

  6.   


    嗨,我说小弟弟,先不说参数,楼主本身的那种调用就有问题的,怎么可能只是简单的把sql语变成存储过程....
    虽然我也没有在java里用过储蓄过程,但我在.net里用过,所以感觉4楼才是正解
    学习...