存储过程参数名称是否必须与从C#传递的参数匹配?

时间:2018-05-08 07:00:39

标签: c# sql-server stored-procedures

我的存储过程如下,

CREATE PROCEDURE SP_Test()
    @Name VARCHAR(10),
    @Dept VARCHAR(10)
AS
BEGIN
    ...
END

我正在调用C#中的存储过程:

SqlCommand scCommand = new SqlCommand("SP_Test", MysqlCon);
scCommand.CommandType = CommandType.StoredProcedure;

scCommand.Parameters.Add("@UserName", SqlDbType.VarChar, 10).Value = "SomeVal";
scCommand.Parameters.Add("@Department", SqlDbType.VarChar, 10).Value = "SomeVal";
...
...

这里我给出了与过程参数名称不同的名称,这会导致任何错误吗?

1 个答案:

答案 0 :(得分:2)

是的,与存储过程参数具有相同的名称是必须的,因为编译器根据名称映射参数,因此如果您给出不同的名称,它将无法映射值

所以你的C#代码应该是这样的

scCommand.Parameters.Add("@Name", SqlDbType.VarChar, 10).Value = "SomeVal";
scCommand.Parameters.Add("@Dept", SqlDbType.VarChar, 10).Value = "SomeVal";