Я использую 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 на
это ссылка MSDN.
Мой сохраненный код процедуры выглядит следующим образом. Я могу упростить это ради этого поста, если вы запросите так:
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, с которым сравнивается результат подзапроса.
Я не вижу причин, почему это не должно работать. Если у вас есть какие-либо подсказки, пожалуйста, дайте мне знать.