Я пытался создать динамический SQL, который получает все задачи для некоторых пользователей
Процедура [GetAllSubExecutorsByUserId] возвращает идентификаторы всех подчиненных текущего пользователя.
Я записываю эти идентификаторы во временную таблицу, и после этого хочу создать динамический SQL, чтобы получить все задачи из таблицы [tasks], где столбец «Executor» имеет значение IN во этой временной таблице
Запрос, который я написал, следующий:
DECLARE @UserId VARCHAR(10) = 72;
DECLARE @tmp TABLE ( Id VARCHAR(10));
INSERT @tmp exec [dbo].[GetAllSubExecutorsByUserId] @Source = @UserId;
DECLARE @SQL VARCHAR(max);
SELECT @SQL = 'SELECT * FROM tasks ';
SELECT @SQL = @SQL + 'WHERE Executor IN (' + (select Id from @tmp) + ')';
EXEC(@SQL);
Но когда я его запускаю, выдает ошибку:
Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.
И я не могу понять, как это исправить, потому что, если я запускаю тот же запрос (который не является динамическим SQL, он отлично работает)
запрос, который работает, является статическим:
DECLARE @UserId VARCHAR(10) = 72;
DECLARE @tmp TABLE ( Id VARCHAR(10));
INSERT @tmp exec [dbo].[GetAllSubExecutorsByUserId] @Source = @UserId;
SELECT * FROM tasks WHERE Executor IN (select Id from @tmp)
Но мне нужен диаминский SQL ...
Помогите мне, пожалуйста, решить эту проблему.
Спасибо.