从 SQL 服务器发送邮件时从表中动态获取值
Get values dynamically from tables while sending mails from SQL Server
我有一个 table:
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'
.
我不想合并 table 之外的日期字段,我绝对希望功能应该在 table 中,我们应该处理数据并得到结果。
注:
如果可以更改 table 中的值,那也可以。但是应该从 table.
中选择值
希望可行。提前致谢。
将函数放在字符串之外:
CREATE TABLE A(Id INT, Val VARCHAR(100))
INSERT INTO A VALUES (1,'MyData'+format(getdate(),'yyMMdd')+'.CSV')
您可以通过稍微改变 table 结构来做到这一点。
尝试以下操作:
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
我有一个 table:
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'
.
我不想合并 table 之外的日期字段,我绝对希望功能应该在 table 中,我们应该处理数据并得到结果。
注:
如果可以更改 table 中的值,那也可以。但是应该从 table.
中选择值希望可行。提前致谢。
将函数放在字符串之外:
CREATE TABLE A(Id INT, Val VARCHAR(100))
INSERT INTO A VALUES (1,'MyData'+format(getdate(),'yyMMdd')+'.CSV')
您可以通过稍微改变 table 结构来做到这一点。
尝试以下操作:
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