sql-server - 存储过程错误附近的语法不正确

标签 sql-server stored-procedures ado.net .net-3.5

我正在更新一长串记录。在我的代码中,一切都按预测运行,直到执行查询。我得到一个

Incorrect syntax near 'TempUpdatePhysicalCityStateZip'

(我的存储过程名称)。我已经使用 SQL Server Management Studio 对其进行了测试,并且运行良好。所以,我不太确定我哪里错了。下面是我的存储过程和代码:

ALTER PROCEDURE [dbo].[TempUpdateCityStateZip] 
    @StoreNo nvarchar (11),
    @City nvarchar(50),
    @State nvarchar(2),
    @Zip nvarchar(5)    
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE StoreContact
    SET City = @City, State = @State, Zip = @Zip
    WHERE StoreNo = @StoreNo
END

这是我的代码:

Dictionary<string, string> CityStateZipList = getCityStateZipList(dbPath);

using (SqlConnection conn = new SqlConnection(dbPath))
{
    conn.Open();

    SqlCommand cmdUpdate = new SqlCommand("TempUpdateCityStateZip", conn);

    foreach (KeyValuePair<string, string> frKeyValue in CityStateZipList)
    {
        cmdUpdate.Parameters.Clear();

        string[] strCityStateZip = frKeyValue.Value.Split(' ');
        cmdUpdate.Parameters.AddWithValue("StoreNo", frKeyValue.Key.ToString());

        foreach (String i in strCityStateZip)
        {
            double zipCode;

            if (i.Length == 2)
            {
                cmdUpdate.Parameters.AddWithValue("State", i);
            }
            else if (i.Length == 5 && double.TryParse(i, out zipCode))
            {
                cmdUpdate.Parameters.AddWithValue("Zip", i);
            }
            else
            {
                cmdUpdate.Parameters.AddWithValue("City", i);
            }
        }

        cmdUpdate.ExecuteNonQuery();
    }
}

最佳答案

我相信如果您不指定命令类型,您会收到令人费解的错误消息:

cmdUpdate.CommandType = CommandType.StoredProcedure;

关于sql-server - 存储过程错误附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/278361/

相关文章:

sql - "With recompile"是否重新编译存储过程中的所有查询?

c# - ADO.NET 连接字符串错误

java - sql server 2005 通过 windows 身份验证连接

sql - 需要验证内连接与子查询

sql - 存储过程到删除表

c# - Entity Framework 连接池 : how to inject UserId into SQL Servers session_context?

c# - 如何使用没有主键的 SqlAdapter.Update 更新表

sql - 重复创建和删除同名的临时表

sql-server - 如何在 SSMS 2008 中更改 "Edit Top 200 Rows"中的 SQL

mysql - SELECT 可以单独工作,但在分配给游标时返回 0 行