Получать значения динамически из таблиц при отправке почты с сервера SQL - PullRequest
0 голосов
/ 17 марта 2020

У меня есть таблица:

CREATE TABLE A(Id INT, Val VARCHAR(100))
INSERT INTO A VALUES (1,'MyData+format(getdate(),''yyMMdd'')+.CSV')

DECLARE @out VARCHAR(100)
SELECT @out = Val FROM A WHERE Id = 1

EXEC sp_send_dbmail @profile_name='MyProfile',
     @recipients='test@gmail.com',
     @subject=@out,
     @body='This is the body of the test message.'

Когда я выполняю запрос, я получаю письмо с темой вроде 'MyData+format(getdate(),'yyMMdd')+.CSV', но я хочу вывод, например 'MyData20200317.CSV'.

Я не хочу объединять поле даты за пределами таблицы, я определенно хочу, чтобы функциональность была в таблице, и мы должны обработать данные и получить результат.

Примечание:

Если есть возможность изменить значение в таблице, значит, это тоже нормально. Но значения должны быть выбраны из таблицы.

Я надеюсь, что это выполнимо. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

Вы можете сделать это, немного изменив структуру таблицы.

попробуйте следующее:

CREATE TABLE #A(Id INT, Val_START VARCHAR(100), Val VARCHAR(100), Val_END VARCHAR(100))
INSERT INTO #A VALUES (1,'MyData','format(getdate(),''yyMMdd'')', '.CSV')

DECLARE @SQL NVARCHAR(MAX)
DECLARE @OUT VARCHAR(100)
SET @SQL = N'SET @OUT = ' + (SELECT ''''+Val_START+'''+' + VAL + '+'''+Val_END+''''FROM #A WHERE Id = 1)

exec sp_executesql @sql, N'@OUT VARCHAR(100) output', @OUT out
SELECT @OUT
1 голос
/ 17 марта 2020

Поместите функцию вне строки:

CREATE TABLE A(Id INT, Val VARCHAR(100))
INSERT INTO A VALUES (1,'MyData'+format(getdate(),'yyMMdd')+'.CSV')
...