Мне нужно построить свой запрос динамически, во-первых, он получает maxlogid из журнала и добавляет его к имени временной таблицы.Затем он выполняет COALESCE, чтобы вернуть отдельные значения в строку.
Однако вывод строки, который я хочу иметь в параметре, позволяет позже использовать его снова в динамическом запросе sql.
Вот мой код;
DECLARE @maxLogId VARCHAR(10)
SELECT @maxLogId = (SELECT Max(id) FROM dbo.tLog)
DECLARE @PolicyTempTable VARCHAR(100)
SET @PolicyTempTable = '##tPols' + @maxLogId
DECLARE @emailParm NVARCHAR(1000)
SET @emailParm = N'DECLARE @email VARCHAR(MAX)
SELECT COALESCE(@email+'','' ,'''') + '''''''''''' + EMAIL + ''''''''''''
FROM (SELECT DISTINCT EMAIL FROM ' + @PolicyTempTable + ') d'
EXEC sp_executesql @emailParm
Результаты возвращаются следующим образом:
"abc@a.co.uk", "" abc@b.co.uk "
Я хочу иметь возможность записать sp_executesql в отдельный параметр, чтобы я мог использовать его для динамического запроса, как показано ниже;
DECLARE @StrSQLEmail VARCHAR(8000)
SET @StrSQLEmail = 'SELECT * FROM OPENQUERY(ATOM,''Select * from ATOMS.EMAILS WHERE EMAIL IN (' + '' EXEC sp_executesql @emailParm + '' + ')'')'
Однако я не могу использоватьsp_executesql в моем динамическом запросе.