【发布时间】:2012-01-28 01:02:50
【问题描述】:
我正在尝试向我的数据集添加查询并收到错误“必须声明标量变量@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
我做错了什么让我绊倒?怀疑什么时候绊倒我?
【问题讨论】:
-
我不知道为什么它会给你你提到的错误,但我很好奇你为什么将
@searchstr声明为nvarchar(64)。siteguid是否没有输入为uniqueidentifier? -
哦,我只是将一些代码放在一起,看看我的 SQL 在哪里有效。似乎工作正常,我希望将它添加到我的 DataSet 中,但是你不能在 DataSet 查询中使用 DECLARE 或 SET
-
我放弃并重写了查询,没有使用 CASE 或 WHEN 语句。
标签: sql sql-server dataset