如果是返回的值应该要指定方向:
Parameter para_c=cmd2.Parameters.Add("@c",SqlDbType.Int);
para_c.Direction=ParameterDirection.output;
c=para_c.Value.toString();
这样在调用webservices时,就能取得返回的值了

解决方案 »

  1.   

    多谢,搞定了。
    ----------------
    CREATE PROCEDURE p_out 
    @a as int,
    @b as int,
    @c as int output
    AS
    set @c=@a+@b
    ---------------------
    .........
    SqlCommand cmd2=new SqlCommand("p_out",conn);
    cmd2.CommandType=CommandType.StoredProcedure;
    cmd2.Parameters.Add("@a",SqlDbType.Int);
    cmd2.Parameters.Add("@b",SqlDbType.Int);
    SqlParameter para_c=cmd2.Parameters.Add("@c",SqlDbType.Int);
    cmd2.Parameters[0].Value=2;
    cmd2.Parameters[1].Value=3;
    para_c.Direction=ParameterDirection.Output;
    conn.open();
    cmd2.ExecuteNonQuery();
    conn.close();
    this.Response.Write(para_c.value.ToString());
      

  2.   

    再继续补一点(取得return值)
    CREATE PROCEDURE p_out 
    @a as int,
    @b as int,
    @c as int output
    AS
    set @c=@a+@b
    return '10'
    ---------------------
    .........
    SqlCommand cmd2=new SqlCommand("p_out",conn);
    cmd2.CommandType=CommandType.StoredProcedure;
    cmd2.Parameters.Add("@a",SqlDbType.Int);
    cmd2.Parameters.Add("@b",SqlDbType.Int);
    SqlParameter para_c=cmd2.Parameters.Add("@c",SqlDbType.Int);
    SqlParameter para_r=cmd2.Parameters.Add("returnvalue",SqlDbType.Int);
    cmd2.Parameters[0].Value=2;
    cmd2.Parameters[1].Value=3;
    para_c.Direction=ParameterDirection.Output;
    para_r.Direction=ParameterDirection.ReturnValue;
    conn.open();
    cmd2.ExecuteNonQuery();
    conn.close();
    this.Response.Write(para_c.value.ToString());
    this.Response.Write(para_r.value.ToString());