存储过程如下:
create procedure selectUserBySex
@USex bit
as
select * from Users where USex=@USex
goConnection con = DriverManager.getConnection(url,"sa",null);

String sql = "{? = call selectUserBySex(?)}";
CallableStatement cs = con.prepareCall(sql);

cs.registerOutParameter(1,java.sql.Types.OTHER);
cs.setBoolean(2,true);

boolean b = cs.execute();
ResultSet rs = (ResultSet)cs.getObject(1);结果cs.registerOutParameter(1,java.sql.Types.OTHER);报异常:
Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Dri
ver for JDBC]The specified SQL type is not supported by this driver.

解决方案 »

  1.   

    String sql = "{call selectUserBySex(?)}";
    CallableStatement cs = con.prepareCall(sql);
            
    cs.setBoolean(1,true);
            
    ResultSet rs = cs.executeQuery();
      

  2.   

    con.setAutoCommit(false);
    CallableStatement proc = con.prepareCall("{ ? = call doquery ( ? ) }");
    proc.registerOutParameter(1, Types.Other);
    proc.setInt(2, -1);
    proc.execute();
    ResultSet results = (ResultSet) proc.getObject(1);
    while (results.next()) {
      //...
    }
    results.close();
    proc.close();我试过了,好使的.cs.registerOutParameter(1,java.sql.Types.OTHER);
    应该是你的JDBC驱动不支持selectUserBySex的返回类型吧.(refcursor)
      

  3.   

    回AppleYang2006 :ResultSet rs = (ResultSet)cs.getObject(1);
    报异常:Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).
      

  4.   

    回trumf 这与JDBC驱动有关系吗
    我的驱动是2004年10月19日版本的,从来没出现过什么问题啊是不是存储过程的问题——一定要return一个值,如果是结果集的话要用游标呢?这个问题困扰我好几天了,望哪位大虾帮我解惑!