cmd.Parameters["@ReturnValue"].Direction = ParameterDirection.ReturnValue;  

解决方案 »

  1.   


    --如果要在程序中获取存储过程输出参数,将存储过程改为:
    ALTER PROCEDURE [dbo].[test] 
    @ReturnValue int output       
    AS
          set @ReturnValue=33
    go
      

  2.   

    谢谢 楼上的 如果我吧 SQL改成 
    ALTER PROCEDURE [dbo].[test]
     AS 
    declare @a int
     set @a= 33
     RETURN @a
    这样就能获取retunrn
    但是我不想定义declare @a
    我看别人写的 select 33
    RETURN
    就直接返回select的值
      

  3.   

    因为第一个过程没有返回值,而是执行一次select查询,而第二个有返回值,即return @a。
    第一个改成这样就有值了        
            SqlConnection conn = new SqlConnection(StrConn);
            conn.Open();
            SqlCommand cmd = new SqlCommand("test", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader reader = cmd.ExecuteReader();
            int returnValue = (int)reader.GetValue(0);
            Console.WriteLine(returnValue);
      

  4.   

    ALTER PROCEDURE [dbo].[test] 
    @ReturnValue int output       
    AS
          set @ReturnValue=33
    go
    cmd.Parameters["@ReturnValue"].Direction = ParameterDirection.Output;ORALTER PROCEDURE [dbo].[test]      
    AS
          return 33
    go
    cmd.Parameters["@ReturnValue"].Direction = ParameterDirection.ReturnValue;