私は 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.
このMSDN リンクの例 # B に従っています 。
私のストアドプロシージャコードは次のとおりです。ご要望があれば、この投稿のために簡略化できます。
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 の間にデータ型の不一致がないことを確認しました。
これがうまくいかない理由はわかりません。手がかりがあれば、私に知らせてください。