DECLARE @providerIdList varchar(400)
DECLARE @q varchar(400)
SELECT @q = ''
SELECT @providerIdList = '(1, 5, 15)'
SET @q = 'SELECT u.Id FROM [user] u
LEFT JOIN Provider p ON u.Provider_FK = p.Id
LEFT JOIN Providers2Users pu ON pu.user_FK = u.Id
LEFT JOIN Provider ap ON ap.Id = pu.provider_fk
WHERE p.Id IN ' + @providerIdList
exec @q
Вот исключение, которое я получаю, когда я пытался выполнить запрос, показанный вышеКак я могу исправить эту ошибку SQL на этот запрос
Msg 203, Level 16, State 2, Line 18
The name 'SELECT u.Id FROM [user] u
LEFT JOIN Provider p ON u.Provider_FK = p.Id
LEFT JOIN Providers2Users pu ON pu.user_FK = u.Id
LEFT JOIN Provider ap ON ap.Id = pu.provider_fk
WHERE p.Id IN (1, 5, 15)' is not a valid identifier.
Я был бы очень признателен, если кто-то может указать мне причину этих ошибок
exec (@q) также будет работать. Вам просто нужно окружить ваш @var в скобках –
, это не сработает: Msg 214, уровень 16, состояние 2, процедура sp_executesql, строка 1 Процедура ожидает параметр '@statement' типа 'ntext/nchar/nvarchar'. –
@KM: Исправлено это nvarchar. Я все время забываю эту зависимость sp_executesql. Однако, как правило, вы должны использовать nvarchar. Не предполагайте, что ASCII сможет охватить все возможные персонажи! – Eric