必须在运行时声明标量变量

时间:2014-12-01 18:49:46

标签: c# ado.net

我有一个IN clause,我不知道在运行时它将从我的配置文件中读取它们将有多少值,所以使用一些代码我设法得到这样的东西:(右侧我在运行时从我放在那里的断点处复制了它的值:

string inClause = "@RefTableK0,@RefTableK1,@RefTableK2,@RefTableK3"

然后再次通过代码执行commandText

Select * From Blah
 Where A.GroupDescription = @GroupDescription And B.RefTable_K IN 
 (@RefTableK0,@RefTableK1,@RefTableK2,@RefTableK3)

然后将值放在这些参数中我这样做:

    for (int i = 0; i < RtkParamNames.Length; i++)
    {
        drCredentialingGroup.Parameters.Add(RtkParamNames[i], RtkValues[i]);
    }

现在,如果我将鼠标悬停在参数上,我会在下面的图片中看到这样的内容:

enter image description here

之后,当我调用Fill方法时,我得到了错误:

Exception:Select Command Exception - Must declare the scalar variable "@RefTableK0@".
Exception:Must declare the scalar variable "@RefTableK0@".
Source:.Net SqlClient Data Provider

1 个答案:

答案 0 :(得分:0)

最后必须手动删除"@"标志,请注意我附加的图片中添加的值没有"@"符号,所以在for循环中我是分配值,我添加了.Replace("@", "")