找不到存储过程
本文关键字:存储过程 找不到 | 更新日期: 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";
不需要在命名存储过程的字符串中列出参数。