У меня есть хранимая процедура, из которой я создаю отчет, и я натолкнулся на небольшую проблему, которую надеюсь решить.
Хранимая процедура принимает только один параметр:
@nID varchar(max)=null
Этот параметр может иметь значение NULL, иметь значение 1 = «1» или несколько значений «1,3»
У меня есть функция split, поэтому параметр, который может выглядеть следующим образом: «1,3,5» превратит его в «1», «3», «5».
Это часть моего оператора select (подзапроса)
Select Value1,
(select tblIns.nDesc from tblIns where tblIns.nID in (SELECT items FROM
dbo.SplitFunction(@nID, ',', 'nID'))) as 'Description'
From ....
Where ....
Запрос работает отлично, если в моем параметре @nID
передано только 1 значение, однако, когда я передаю более одного значения, я получаю следующую ошибку:
Подзапрос вернул более 1 значения. Это не разрешено, когда
подзапрос следует =,! =, <, <=,>,> = или когда подзапрос используется как
выражение.
Моя цель состоит в том, чтобы иметь возможность объединить результат подзапроса, так что если я передам более 1 значения, 'Description'
будет выглядеть примерно так
Text1, Text2, Text2
Что-то подобное выполнимо? Или это потребует гораздо больше работы.
Без подзапроса я могу передать любое количество значений в SP, и это дает правильные результаты, мне просто нужно получить описание TEXT для параметров и объединить их в один столбец.
РЕДАКТИРОВАТЬ уточнение:
Таблицы
nID nDesc
1 Text1
2 Text2
Допустим, я передаю значения '1,2' в качестве моего параметра в хранимую процедуру, результаты, которые я надеюсь получить:
Value1 Description
Test Text1, Text2