【问题标题】:How to get return value from SQL Server stored procedure in ASP.NET Core Web API如何从 ASP.NET Core Web API 中的 SQL Server 存储过程中获取返回值
【发布时间】:2022-01-06 20:28:25
【问题描述】:

我正在创建一个 ASP.NET Core 5 Web API。我试图从 SQL Server 存储过程中获取返回值。

这是我的代码:

public async Task<bool> Login(EmployeeDO _loginDO)
{
    var parameters = new List<SqlParameter>();

    parameters.Add(new SqlParameter("@RetnParam",  ParameterDirection.ReturnValue));
    parameters.Add(new SqlParameter("@LoginId", _loginDO.empno));
    parameters.Add(new SqlParameter("@LoginPwd", _loginDO.password));

    string StoredProc = "exec PR_ABCXYZ " +
                "@LoginId = " + _loginDO.empno + "," +
                "@LoginPwd = '" + _loginDO.password + "'";

    var result = await  DbContext.Database.ExecuteSqlRawAsync(StoredProc);

    bool ret = Convert.ToBoolean(result);

    return ret;
}

结果总是返回-1。

【问题讨论】:

  • exec PR_ABCXYZ 应该是exec @RetnParam = PR_ABCXYZ
  • 嗨 Dale,它会抛出错误“必须声明标量变量“@RetnParam”。”
  • 可能是因为您没有将参数列表传递给 ExecuteSqlRawAsync?
  • 您似乎在数据库中以明文形式存储密码您不能这样做!
  • 加载...这个问题经常被问到...一个快速的谷歌应该找到你很多例子。

标签: sql-server .net-core


【解决方案1】:

试试这个:

    public async Task<bool> Login(EmployeeDO _loginDO)
    {
        var parameters = new List<SqlParameter>();
        // **param name should not have @ here **
        parameters.Add(new SqlParameter("RetnParam",  ParameterDirection.ReturnValue));
        parameters.Add(new SqlParameter("LoginId", _loginDO.empno));
        parameters.Add(new SqlParameter("LoginPwd", _loginDO.password));

        string StoredProc = "exec @RetnParam = PR_ABCXYZ @LoginId @LoginPwd"; // **No need to concatenate @LoginId and @LoginPwd values here**

        await  DbContext.Database.ExecuteSqlRawAsync(StoredProc, parameters); // **pass parameters here**
        bool ret = Convert.ToBoolean(parameters[0].Value); // **use RetnParam value
        return ret;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多