Я создал пользовательский тип с именем membertypes
, который состоит из одного столбца типа int
с именем membertype
,
У меня есть хранимая процедура, например:
declare @membertypes dbo.MemberTypes;
INSERT INTO @membertypes VALUES (1);
INSERT INTO @membertypes VALUES (3);
declare @membertypecount int = (select count(1) from @membertypes)
select username, MiniThumbNail, userID,
from members
where members.membertype in (case when @membertypecount > 0 then (select membertype from @membertypes) else members.membertype end)
Не работает, я получаю сообщение об ошибке:
Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.
Однако, если я изменю код на этот это работает: -
declare @membertypes dbo.MemberTypes;
INSERT INTO @membertypes VALUES (1);
INSERT INTO @membertypes VALUES (3);
select username, MiniThumbNail, userID,
from members
where members.membertype in (select membertype from @membertypes)
Почему исходный код вызывает эту ошибку?