两种选择:
1. 注册JDBC返回参数
2. 以ResultSet方式返回一个游标

解决方案 »

  1.   

    但我用注册返回参数(registerOutParameter(1, Types.INTEGER))总是出错
      

  2.   

    CREATE   PROCEDURE sp_account_checkLogin
    @v_account_id  VARCHAR(20),
    @v_account_pwd VARCHAR(20),
             @return INTEGER OUTPUT
    AS
    declare @v_pwd VARCHAR(20)  BEGIN
    SELECT @v_pwd = account_pwd 
    FROM account
    WHERE account_id = @v_account_id
    END IF @@error <> 0 OR  @v_pwd <> @v_account_pwd
    BEGIN
    SELECT @return = 1
    END
    ELSE
    BEGIN
    SELECT @return = 0
    END
    ----------------------------- 
       try{
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
          Connection conn =
              DriverManager.getConnection(
              "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=aa",
              "sa",
              "kongkong");
          CallableStatement cs = conn.prepareCall("{call sp_account_checkLogin(?,?,?)}");      cs.setString(1, "id");
          cs.setString(2, "password");
          cs.registerOutParameter(3, java.sql.Types.INTEGER); //注册输出类型      cs.execute();
          System.out.println(" " + cs.getInt(3));
        }catch(ClassNotFoundException cnfe){
          System.err.println("err:"+cnfe.getMessage());
        }catch(SQLException sqle){
          System.err.println("err11:"+sqle.getMessage());
        }