【问题标题】:Incorrect syntax near 'Name'. Must declare the scalar variable "@Provider"“名称”附近的语法不正确。必须声明标量变量“@Provider”
【发布时间】:2013-06-27 03:45:10
【问题描述】:

您好,我正在使用下面的代码选择一些数据,但在“名称”附近出现错误语法不正确。必须声明标量变量“@Provider”。有什么想法吗?谢谢!

 cmd = New SqlCommand
        cmd.Connection = Con
        cmd.CommandText = "SELECT NPI, [Entity Type Code], [Provider Last Name (Legal Name)] FROM NPIData WHERE ([Provider Last Name (Legal Name)] LIKE @Provider Last Name (Legal Name) + '%'"
        cmd.Parameters.AddWithValue("@Provider", prefixText)
        Dim customers As List(Of String) = New List(Of String)
        Dim reader As SqlDataReader = cmd.ExecuteReader()

        While reader.Read
            customers.Add(reader("@Provider").ToString)

        End While
        Con.Close()

        Return customers.ToArray

【问题讨论】:

  • 如果您尝试在 sql runs 中运行查询?
  • 一般避免创建带空格的列
  • 将空间转换为_(至少用于参数)
  • 你在sql management studio中声明参数Provider Last Name(法定名称)????

标签: asp.net sql-server


【解决方案1】:

我认为你的代码应该是这样的:

cmd.CommandText = "SELECT NPI, [Entity Type Code], [Provider Last Name (Legal Name)] FROM NPIData WHERE ([Provider Last Name (Legal Name)] LIKE @Provider + '%'"
cmd.Parameters.AddWithValue("@Provider", prefixText)
Dim customers As List(Of String) = New List(Of String)
Dim reader As SqlDataReader = cmd.ExecuteReader()

While reader.Read
    customers.Add(reader("[Provider Last Name (Legal Name)]").ToString)

End While

【讨论】:

  • 谢谢,我试过了,但我收到错误 Incorrect syntax near '%'。
  • 好的,已经解决了这个错误,谢谢,但是现在在线customers.Add(reader("@Provider").ToString) 它说索引超出范围?
【解决方案2】:

参数名称/键不能包含空格。

cmd.Parameters.AddWithValue("@Provide", prefixText)

这是所需的语法。

【讨论】:

  • 列名有空格怎么办?我必须更改列名吗?
  • @user1342164 您将更改参数名称,而不是列名称
  • 参数名可以随意更改。不强制和列名一样
  • 好的,我更改了代码并在顶部进行了编辑,以便您可以看到,但现在我收到错误 Incorrect syntax near 'Last'。
猜你喜欢
  • 2019-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多