代码之家  ›  专栏  ›  技术社区  ›  wonea Ilya Smagin

数据集返回错误“必须声明标量变量…”

  •  0
  • wonea Ilya Smagin  · 技术社区  · 16 年前

    我正试图向数据集添加一个查询,并得到一个错误“Must declare the scalar variable@searchstr”。我觉得这有点奇怪,因为我在没有问题之前使用了@variable来传递参数,但不管是什么原因,它在这里失败了。

    select DISTINCT g.groupname, 
    CASE WHEN s.siteguid = @searchstr THEN 1 ELSE 0 END AS doesitexist
    from groups g left outer join sitegroups as sg on g.groupguid = sg.groupguid 
    left outer join sites as s on sg.siteguid = s.siteguid
    

    发现它在LINQPad中也失败了,所以添加更多的信息,尽管遗憾的是这在数据集中仍然不起作用。:-(以下适用于LINQPad和SQL Server管理工作室。

    declare @searchstr nvarchar(64);
    set @searchstr = '21EC2020-3AEA-1069-A2DD-08002B30309D';
    select DISTINCT g.groupname, 
    CASE WHEN s.siteguid = @searchstr THEN 1 ELSE 0 END AS doesitexist
    from groups g left outer join sitegroups as sg on g.groupguid = sg.groupguid 
    left outer join sites as s on sg.siteguid = s.siteguid
    

    3 回复  |  直到 16 年前
        1
  •  1
  •   Gregorio Di Rocco    14 年前

    我建议尝试这样做,以强制解析器获取参数

    select DISTINCT g.groupname, 
    CASE WHEN s.siteguid = @searchstr THEN 1 ELSE 0 END AS doesitexist
    from groups g left outer join sitegroups as sg on g.groupguid = sg.groupguid 
    left outer join sites as s on sg.siteguid = s.siteguid
    WHERE (@searchstr = '' OR 1 = 1)
    
        2
  •  0
  •   Tobiasopdenbrouw    16 年前

        3
  •  0
  •   Joel Mansford    16 年前

    这可能是混淆的,因为您没有在WHERE语句中使用参数。乍一看,这似乎不是您应该在SQL Server上执行的操作,因为它不会影响返回的特定行。

    推荐文章