我想得到存储过程的返回值,但不知什么原因,总是返回"0"值,请大哥大姐们帮忙!!
代码:
con.Open();
string sql;
sql="pro_update";
SqlCommand com=new SqlCommand(sql,con);
com.CommandType=CommandType.StoredProcedure;
com.Parameters.Add(new SqlParameter("@ZX_UserID",SqlDbType.NVarChar,20));
com.Parameters["@ZX_UserID"].Value=this.TextBox1.Text;
com.Parameters.Add(new SqlParameter("@ZX_Email",SqlDbType.NVarChar,20));
com.Parameters["@ZX_Email"].Value=this.TextBox2.Text;
com.Parameters.Add(new SqlParameter("@getvalue",SqlDbType.Int,4,ParameterDirection.ReturnValue.ToString()));
com.ExecuteNonQuery();
con.Close();
int i;
i=Convert.ToInt32(com.Parameters["@getvalue"].Value);
Response.Write(i.ToString());下面是存储过程:
CREATE PROCEDURE pro_update
@ZX_UserID nvarchar(20),
@ZX_Email nvarchar(20),
@getvalue int=null output
 AS
update ZX_User set ZX_Email=@ZX_Email where ZX_UserID=@ZX_UserID
set @getvalue=1
return @getvalue
GO

解决方案 »

  1.   

    CREATE PROC [ EDURE ] procedure_name [ ; number ]
        [ { @parameter data_type }
            [ VARYING ] [ = default ] [ OUTPUT ] //注意这里,在存储过程中是通过一个变理的outpub返回的。
        ] [ ,...n ] [ WITH
        { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] 
      

  2.   

    ???
    存储过程写错了吧
    CREATE PROCEDURE pro_update
    @ZX_UserID nvarchar(20),
    @ZX_Email nvarchar(20),
    @getvalue int output
     AS
    update ZX_User set ZX_Email=@ZX_Email where ZX_UserID=@ZX_UserID
    set @getvalue=1
    return @getvalue
    GO
      

  3.   

    ParameterDirection.ReturnValue
    这句有问题,应该是
    ParameterDirection.Output
      

  4.   

    先谢谢上面几位楼主..不过我试过了还是不行的.如查把存储过程中@getvalue int=null output改为@getvalue int output  出错说:没有转参数..ParameterDirection.ReturnValue改为Output也是一样不行啊..怎么算?????????请帮我改成一个完整的好吗??/
      

  5.   

    ParameterDirection.Output
    就对了啊
      

  6.   

    构造函数用错啦
    com.Parameters.Add(new SqlParameter("@getvalue",SqlDbType.Int,4));
    com.Parameters["@getvalue"].Direction = ParameterDirection.ReturnValue;
      

  7.   

    如果把@getvalue作为返回值使用(return值) ,那么这个参数必须第一个声明,否则接收不到;
    如果使用output返回值,则
    com.Parameters.Add(new SqlParameter("@getvalue",SqlDbType.Int,4));
    com.Parameters["@getvalue"].Direction = ParameterDirection.ReturnValue;