找不到存储过程

本文关键字:存储过程 找不到 | 更新日期: 2023-09-27 18:23:52

我的C#代码中有很多存储过程调用,但只有这一个一直失败。我正在运行VS 2012和SQL Server 2008 R2。我的连接字符串对于我的所有存储过程都是相同的,并且我对所有存储过程具有相同的权限。

我收到这个错误

找不到存储过程"StP_Map_Peload@bldg、@linePos、@startD、@lineNo、@Pgrm、@apPos、@sessionID"
System.Exception{System.Data.SqlClient.SqlException}

在这条线上:

SqlDataReader dr = cmd.ExecuteReader();:

我尝试用相同的代码创建一个新的存储过程,设置权限,但也失败了。

public ArrayList DetailPreload(string bldg, string linePos, DateTime startD, string lineNo, string Pgrm, int apPos, string sessionID)
{
    string strSQL = "StP_Map_Preload @bldg, @linePos, @startD, @lineNo, @Pgrm, @apPos, @sessionID";
    ArrayList list = new ArrayList();
    using (SqlConnection conStr = new SqlConnection(connM))
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@bldg", bldg);
            cmd.Parameters.AddWithValue("@linePos", linePos);
            cmd.Parameters.AddWithValue("@startD", startD);
            cmd.Parameters.AddWithValue("@lineNo", lineNo);
            cmd.Parameters.AddWithValue("@Pgrm", Pgrm);
            cmd.Parameters.AddWithValue("@apPos", apPos);
            cmd.Parameters.AddWithValue("@sessionID", sessionID);
            cmd.CommandText = strSQL;
            cmd.Connection = conStr;
            conStr.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                list.Add(new
                        {
                            company = dr["Company"],
                            Pgrm = dr["Pgrm"],
                            lineNum = dr["lineNum"],
                            lineStation = dr["lineStation"],
                            jobCount = dr["Job"],
                            item = dr["Item"],
                            qty = dr["Qty"],
                            partQty = dr["partQty"],
                            invCnt = dr["invCnt"],
                            runID = dr["runID"]
                        });
            }
            conStr.Close();
            return list;
        }
    }
}

我的存储过程在SQL Server中,我可以在SQL Server 中执行它

/*
StP_Map_Preload 'AA-12', '7', '09/19/2014', '', '247', 7, 'val2gxfh5ihoqy4tshzl4tp3'
*/
ALTER proc [dbo].[StP_Map_Preload] 
      @Bldg varchar(10), 
      @linePos varchar(5), 
      @startD date, 
      @LineNo varchar(5), 
      @Pgrm varchar(5), 
      @apPos int, 
      @sessionID varchar(50) 
AS 
BEGIN
    declare @sql varchar(Max), @PST varchar(20), 
            @SI1 varchar(5), @SI2 varchar(5), @SI3 varchar(5), 
            @hasAP bit, @CCLen varchar, 
            @Co varchar(5), @CCs varchar(25), @lsGrp varchar(max)...

找不到存储过程

将线路更改为

string strSQL = "StP_Map_Preload";

不需要在命名存储过程的字符串中列出参数。