首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从存储过程中获取返回值

如何从存储过程中获取返回值
EN

Stack Overflow用户
提问于 2013-12-23 11:57:01
回答 2查看 16.4K关注 0票数 2

我有以下存储过程:

代码语言:javascript
复制
ALTER PROCEDURE spLogin
       @CAD_WEB_LOGIN_USERNAME varchar(60),
       @CAD_WEB_LOGIN_PASSWORD varchar(60),
       @Result int output
AS
BEGIN
    SELECT
        CAD_NUMBER 
    FROM 
        CMACADDR
    WHERE 
        CAD_WEB_LOGIN_USERNAME = @CAD_WEB_LOGIN_USERNAME 
        AND CAD_WEB_LOGIN_PASSWORD = @CAD_WEB_LOGIN_PASSWORD
END

在C#中,我希望执行这个查询并获得返回值。

这是我的密码:

代码语言:javascript
复制
int flag = 0;

con.Open();

SqlCommand cmd3 = new SqlCommand("spLogin", con);
cmd3.Connection = con;
cmd3.CommandType = CommandType.StoredProcedure;

cmd3.Parameters.Add("@CAD_WEB_LOGIN_USERNAME", SqlDbType.VarChar).Value = txtUserName.Text;
cmd3.Parameters.Add("@CAD_WEB_LOGIN_PASSWORD", SqlDbType.VarChar).Value = txtPassword.Text;

SqlParameter parm = new SqlParameter("@Return", SqlDbType.Int);
parm.Direction = ParameterDirection.ReturnValue;
cmd3.Parameters.Add(parm);

flag = cmd3.ExecuteNonQuery();

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

我收到一个错误:

过程或函数'spLogin‘期望参数'@Result',这个参数没有提供。

这段代码的逻辑错误是什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-23 11:59:52

如错误所示,“spLogin”期望参数“@Result”

变化

代码语言:javascript
复制
SqlParameter parm = new SqlParameter("@Return", SqlDbType.Int);

代码语言:javascript
复制
SqlParameter parm = new SqlParameter("@Result", SqlDbType.Int);

编辑

还更新了您的过程,返回一些值。目前,您没有返回任何。另外,您不需要在SP中添加额外的参数。

代码语言:javascript
复制
ALTER PROCEDURE Splogin @CAD_WEB_LOGIN_USERNAME VARCHAR(60), 
                        @CAD_WEB_LOGIN_PASSWORD VARCHAR(60)
AS 
  BEGIN 
      Declare @MyResult as INT 
      SELECT @MyResult = cad_number 
      FROM   cmacaddr 
      WHERE  cad_web_login_username = @CAD_WEB_LOGIN_USERNAME 
             AND cad_web_login_password = @CAD_WEB_LOGIN_PASSWORD 

      RETURN @MyResult -- return value
  END 
票数 3
EN

Stack Overflow用户

发布于 2013-12-24 09:03:26

将ParameterDirection更改为Output,并将参数名称更改为@Result

代码语言:javascript
复制
SqlParameter parm = new SqlParameter("@Result", SqlDbType.Int);

parm.Direction = ParameterDirection.Output;

cmd3.Parameters.Add(parm);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20743044

复制
相关文章

相似问题

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