DataSet返回错误“必须声明标量变量...”

时间:2010-07-14 14:02:54

标签: sql sql-server dataset

我正在尝试向我的数据集添加查询并收到错误“必须声明标量变量@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中也失败了,所以添加更多信息,但遗憾的是,这仍然无法在DataSet中运行。 :-(以下适用于LINQPad和SQL Server Management Studio。

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 个答案:

答案 0 :(得分:1)

我建议尝试这个来强制解析器获取参数

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)

答案 1 :(得分:0)

也许它在sql中不正确,但在另一个位置(参数定义等)?

答案 2 :(得分:0)

它可能很混乱,因为您没有在WHERE语句中使用该参数。乍一看,这看起来不像你应该在SQL Server上做的事情,因为它不会影响返回的特定行。

也许可以提供一些关于你真正希望用这个SQL实现什么的信息?