首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从asp.net中的存储过程获取返回值

从asp.net中的存储过程获取返回值
EN

Stack Overflow用户
提问于 2013-02-11 18:15:11
回答 5查看 127.5K关注 0票数 19

我有一个存储过程

代码语言:javascript
复制
ALTER PROC TESTLOGIN
    @UserName varchar(50),
    @password varchar(50)
As
Begin
    declare @return int;

    set @return  = (SELECT COUNT(*) 
                    FROM CPUser 
                    WHERE UserName = @UserName 
                    AND Password = @password);

    return @return;
End

在c#中

代码语言:javascript
复制
SqlConnection con = db.con;
SqlCommand cmd = new SqlCommand("TESTLOGIN", con);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter parm = new SqlParameter("@return", SqlDbType.Int);
parm.Direction = ParameterDirection.ReturnValue;

cmd.Parameters.Add(parm);
cmd.Parameters.Add(new SqlParameter("@UserName", txtUserName.Text.ToString().Trim()));
cmd.Parameters.Add(new SqlParameter("@password", txtPassword.Text.ToString().Trim()));

cmd.ExecuteNonQuery();
con.Close();

int id = Convert.ToInt32(parm.Value);

但它总是返回0。请帮我解决这个问题

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-12 00:15:52

您需要在代码中使用方向设置为ParameterDirection.ReturnValue的参数,但不需要在SP中添加额外的参数。尝尝这个

代码语言:javascript
复制
  SqlParameter returnParameter = cmd.Parameters.Add("RetVal", SqlDbType.Int);
  returnParameter.Direction = ParameterDirection.ReturnValue;
  cmd.ExecuteNonQuery();

  int id = (int) returnParameter.Value;
票数 39
EN

Stack Overflow用户

发布于 2013-02-11 18:35:49

您可以尝试使用this.Add将参数作为输出方向,并在执行查询后获得输出参数值。

代码语言:javascript
复制
  SqlParameter parmOUT = new SqlParameter("@return", SqlDbType.Int);
  parmOUT.Direction = ParameterDirection.Output;
  cmd.Parameters.Add(parmOUT);
  cmd.ExecuteNonQuery();
  int returnVALUE = (int)cmd.Parameters["@return"].Value;
票数 1
EN

Stack Overflow用户

发布于 2013-02-11 21:52:15

过程从不返回value.You,必须在存储过程中使用输出参数。

代码语言:javascript
复制
ALTER PROC TESTLOGIN
@UserName   varchar(50),
@password   varchar(50)
@retvalue int output
 as
 Begin
    declare @return     int 
    set @return  = (Select COUNT(*) 
    FROM    CPUser  
    WHERE   UserName = @UserName AND Password = @password)

   set @retvalue=@return
  End

然后,您必须从c#添加一个参数方向为out的out参数。希望这是有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14810037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档