SQL Server 存储过程等待参数

Posted

技术标签:

【中文标题】SQL Server 存储过程等待参数【英文标题】:SQL Server stored procedure waiting parameter 【发布时间】:2018-04-03 18:56:51 【问题描述】:

我有一个 SQL Server 存储过程:

exec GetBob @id=3

但是当我在函数中调用这个存储过程时,我得到了错误:

过程或函数需要@id 参数

但是@id 是正确的参数(获取值)。

public List<Bob> GetBob(int id)

    try
    
        connection();
        con.Open();

        DynamicParameters param = new DynamicParameters();
        param.Add("@id", id);

        IList<Bob> EmpList = SqlMapper.Query<Bob>(con, "GetBob", param).ToList();
        con.Close();

        return EmpList.ToList();
    
    catch (Exception)
    
        throw;
    

【问题讨论】:

旁注:这里不需要DynamicParameters;只需new id 作为参数就可以了。附加说明:.AsList().ToList() 效率略高;额外的附加说明:你知道你实际上不需要Open() dapper 的连接,尤其是对于这样的场景? Dapper 会处理它。 【参考方案1】:

试试这个。你应该很好。您需要提供command Type,它是Stored Procedure

public List<Bob> GetBob(int id)

    try
    
        connection();
        con.Open();
        DynamicParameters param = new DynamicParameters();
        param.Add("@id", id);
        IList<Bob> EmpList = SqlMapper.Query<Bob>(
                          con, "GetBob",param,commandType: CommandType.StoredProcedure).ToList();
        con.Close();
        return EmpList.ToList();
    
    catch (Exception)
    
        throw;
    

【讨论】:

"Express parametr "@id" 参数未指定。" (我的翻译)

以上是关于SQL Server 存储过程等待参数的主要内容,如果未能解决你的问题,请参考以下文章

怎样在Sql server中创建,执行和删除存储过程

SQL Server 如何执行 带参数的 存储过程

sql server中的存储过程最多可以有多少参数

sql server中怎样创建保存数据的存储过程

带参数的ms sql server的扩展存储过程,怎么传递参数

SQL server简单的存储过程问题?