【发布时间】:2010-09-14 20:51:58
【问题描述】:
我使用的是 SQL Server 2005,但我遇到了一个我很确定不应该遇到的错误。
Msg 512, Level 16, State 1, Procedure spGetSavedSearchesByAdminUser, Line 8 Subquery
returned more than 1 value. This is not permitted when the subquery
follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
我按照例子#B on thisMSDN 链接。
我的存储过程代码如下。如果您要求,我可以为这篇文章简化它:
ALTER PROCEDURE [dbo].[spGetSavedSearchesByAdminUser]
@strUserName varchar(50)
,@bitQuickSearch bit = 0
AS
BEGIN
SELECT [intSearchID] ,strSearchTypeCode ,[strSearchName]
FROM [tblAdminSearches]
WHERE
strUserName = @strUserName
AND
strSearchTypeCode
IN (
CASE @bitQuickSearch
WHEN 1 THEN 'Quick'
ELSE (SELECT strSearchTypeCode FROM tblAdvanceSearchTypes)
END
)
ORDER BY strSearchName
END
我已检查子查询的结果集与与子查询结果进行比较的 strSearchTypeCode 之间没有数据类型不匹配。
我看不出为什么这不起作用。如果您有任何线索,请告诉我。
【问题讨论】:
标签: sql-server subquery in-clause