public String executeProc(String s)
    {
        rs = null;
        String s2 = "{call PROC_AUTOID(?,?)}";
        String s1;
        try
        {
            if(conn != null)
                conn.close();
            conn = DriverManager.getConnection(sConnStr, UseName, PassWord);
            CallableStatement callablestatement = conn.prepareCall(s2);
            callablestatement.setString(1, s);
            callablestatement.registerOutParameter(2, 1);
            rs = callablestatement.executeQuery();
            rs.next();
            String s3 = rs.getString(1);
            s1 = callablestatement.getString(2);
            rs.close();
            callablestatement.close();
            conn.close();
            conn = null;
        }
        catch(Exception exception)
        {
            return null;
        }
        return s1.trim();
    }

解决方案 »

  1.   

    1 & 2.
      SQL Server: call 存储过程名(参数1,参数2,...)3.unknown
    4.既然有可以用的,那就用可以用的吧
      a是用来执行查询的,这个方法将返回ResultSet.(自己看看Statement类就会明白了)
      

  2.   

    谢谢:
     kongxiangli(笑看红尘) 
     yaray(雅睿,生活在别处) 另外, kongxiangli(笑看红尘) 说是:"{call PROC_AUTOID(?,?)}";但我用的是这样的:"{call PROC_AUTOID(?)}";
    如果有两个参数:"{call PROC_AUTOID(??)}";
    如果有三个参数:"{call PROC_AUTOID(???)}";
    我试过,是成功的
    不知道有什么区别,
      

  3.   

    stmt.executeQuery只能返回select查询语句
    {call PROC_AUTOID(?,?)};是标准写法
      

  4.   

    ????是吗,但我用的:"{call PROC_AUTOID(???)}";这样也能成功,我上次调用是用了21个?号就这么写过来了,但写了,号还不行,谢谢,知道了不少东西,还有第三个问题不知道,高手们请再帮次忙吧:***3, 如何获得返回参数的值;***
    存储过程名:add_user
    参数: @uname nvarchar(10) , @nums int(4) output
    如何得到参数@nums的值呢,我用ASP能写,但JSP用什么语法都不知道,很郁闷啊
      

  5.   

    楼上不是已经说了吗??

    conn = DriverManager.getConnection(sConnStr, UseName, PassWord);
    CallableStatement callablestatement = conn.prepareCall(s2);
     callablestatement.setString(1, s);
     callablestatement.registerOutParameter(2, Types.VARCHAR);  
     callablestatement.execute();
     s1 = callablestatement.getString(2);  //获得输出参数的值啊!!
      

  6.   

    哦那就是说是这么用吗::"{call PROC_AUTOID( 任意个输入参数 , 任意个输出参数 )}";不知道我的理解对不对?
      

  7.   

    哦,是不是应该这样:"{call PROC_AUTOID( ?, ?...)}";
    想把哪个作为输出参数就用下面的方法,在()中指明是第几个参数和该参数的类型
    callablestatement.registerOutParameter(2, Types.VARCHAR);  是第一种理解对还是第二种理解对?
      

  8.   

    callablestatement.setString(1, s);
     callablestatement.registerOutParameter(2, Types.VARCHAR);  
    是输入还是输出由这两句话决定的,你希望是输入就用set否则用out