我想得到存储过程的返回值,但不知什么原因,总是返回"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
代码:
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
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ] //注意这里,在存储过程中是通过一个变理的outpub返回的。
] [ ,...n ] [ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ]
存储过程写错了吧
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
这句有问题,应该是
ParameterDirection.Output
就对了啊
com.Parameters.Add(new SqlParameter("@getvalue",SqlDbType.Int,4));
com.Parameters["@getvalue"].Direction = ParameterDirection.ReturnValue;
如果使用output返回值,则
com.Parameters.Add(new SqlParameter("@getvalue",SqlDbType.Int,4));
com.Parameters["@getvalue"].Direction = ParameterDirection.ReturnValue;