过程改为这样试一下!create proc 名
as
begin
SET NOCOUNT ON你的游标SET NOCOUNT OFF
end

解决方案 »

  1.   

    在客户程序中设置合适的游标位置(客户端或服务端游标库)..我不知道jdbc.但我想原理和ado,odbc是一样..
      

  2.   

    我用的jdbc 下载:
    http://www.microsoft.com/downloads/details.aspx?FamilyID=4f8f2f01-1ed7-4c4d-8f7b-3d47969e66ae&DisplayLang=en请在你的SP的最后加一句:
    select 1
    --===============
    试试我的jsp
    <!-- test.jsp -->
    <%@ page contentType ="text/html;charset=gb2312" %> 
    <%@ page import="java.util.*;" %> 
    <HTML> 
    <HEAD> 
    </HEAD> 
    <BODY> 
    <% 
     java.lang.Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
     java.sql.Connection ConnectionX = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://TRIATON\\PSQL2KE;DatabaseName=tree","sa",""); 
     java.sql.CallableStatement CallableStatementX = ConnectionX.prepareCall("{call sp_test (?)}");
     CallableStatementX.setString(1,"bill"); 
     CallableStatementX.registerOutParameter(1,java.sql.Types.VARCHAR); 
     CallableStatementX.executeQuery(); 
    %>
    <%= CallableStatementX.getString(1)%>
    </BODY>
    </HTML>
      

  3.   

    我的SP:
    ALTER  proc SP_test
    (@OutputX varchar(100) Output)
    as
    DECLARE @f1 varchar(100)
    DECLARE xCursor CURSOR
    FOR SELECT re FROM tree
    OPEN xCursor
    FETCH xCursor into @F1
    WHILE @@FETCH_STATUS = 0
    BEGIN
        set @OutputX = @OutputX + isnull(@F1,'')
        FETCH NEXT FROM xCursor into @F1
    END
    CLOSE xCursor
    DEALLOCATE xCursor
    set @OutputX = 'hello:' + isnull(@OutputX,'Null') 
    select 1
      

  4.   

    class ExecSP
    {
     public static void main(String[] args)  throws java.sql.SQLException 
       {
        try 
          { 
           java.lang.Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
          } 
        catch (java.lang.ClassNotFoundException e1) 
          { 
           System.err.print("ClassNotFoundException: ");
           System.err.println(e1.getMessage()); 
          } 
       java.sql.Connection ConnectionX = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://TRIATON\\PSQL2KE;DatabaseName=tree","sa",""); 
       java.sql.CallableStatement CallableStatementX = ConnectionX.prepareCall("{call sp_test (?)}");
       CallableStatementX.setString(1,"bill"); 
       CallableStatementX.registerOutParameter(1,java.sql.Types.VARCHAR); 
       CallableStatementX.executeQuery(); 
       System.out.print(CallableStatementX.getString(1));
       System.out.print("End");
      }
    }
      

  5.   

    呵呵,认命吧,这是Ms的Bug,无解 @_@
      

  6.   

    对,我也遇到过类似的问题,研究了很久,发现这个问题如果更换了JDBC的驱动程序就OK了,所以我基本认为这个是微软公司提供的Jdbc驱动程序的问题,还有就是M$的SQL Server对Java的支持比较差,所以如果你用Java我建议最好不要使用SQL Server,用其他的数据库吧!
      

  7.   

    请在你的 SP 的最后加一句:
    select 1