Sql server SQL Server:编辑查询结果在SQL Server发送的电子邮件中的显示方式
我已经设置了一个存储过程,如果满足条件,它将发送一封电子邮件,当发送电子邮件时,它看起来是这样的Sql server SQL Server:编辑查询结果在SQL Server发送的电子邮件中的显示方式,sql-server,Sql Server,我已经设置了一个存储过程,如果满足条件,它将发送一封电子邮件,当发送电子邮件时,它看起来是这样的 Name Assignment Start_Date End_Date -------------------------------------------------------------------------------------------------- --- -----
Name Assignment
Start_Date End_Date
--------------------------------------------------------------------------------------------------
---
---------------------------------------------------------------
Doe, John Light Duty
2019-01-05 2019-10-05
(1 row affected)
我希望标题显示在同一行中,减少虚线,结果显示在同一行中。如何修改查询结果显示?您可以尝试以下操作:
IF OBJECT_ID('tempdb..#Data') IS NOT NULL DROP TABLE #Data
-- Create your dataset, assuming Name, Assignment, StartDate and EndDate as columns
SELECT
*
INTO #Data
FROM YourTable
-- Variables to iterate into
DECLARE @Name VARCHAR(MAX)
DECLARE @Assignment VARCHAR(MAX)
DECLARE @StartDate DATE
DECLARE @EndDate DATE
-- If dataset is empty, do nothing
IF (SELECT COUNT(*) FROM #Data) > 0 BEGIN
-- Create headers and css
SET @HtmlContent = '
<style>
html { font-family:Arial }
th, td { padding:5px; }
table { border-collapse:collapse }
th { background-color: blue; border:1px solid white }
td { border: 1px solid #ccc }
</style>
<table>
<tr>
<th>Name</th>
<th>Assignment</th>
<th>Start Date</th>
<th>End Date</th>
</tr>'
-- Create and open cursor
DECLARE DataCursor CURSOR FOR SELECT * FROM #Data
OPEN DataCursor
-- fetch first results
FETCH NEXT FROM DataCursor INTO @Name, @Assignment, @StartDate, @EndDate
-- Loop while results are still being fetched
WHILE @@FETCH_STATUS = 0 BEGIN
-- Create the next html row
SET @HtmlContent = @HtmlContent + '
<tr>
<td>' + @Name + '</td>
<td>' + @Assignment + '</td>
<td style=''text-align:center''>' + FORMAT(@StartDate, 'dd/MM/yyyy') + '</td>
<td style=''text-align:center''>' + FORMAT(@EndDate, 'dd/MM/yyyy') + '</td>
</tr>'
-- Fetch the next results and restart loop
FETCH NEXT FROM DataCursor INTO @Name, @Assignment, @StartDate, @EndDate
END
-- Close and cleanup the cursor
CLOSE DataCursor
DEALLOCATE DataCursor
-- Close the table, we opened it in the headers
SET @HtmlContent = @HtmlContent + '</table>'
-- Send the stuff
EXEC msdb..sp_send_dbmail @profile_name='Your mail profile',
@recipients='Something@somewhere.com',
@copy_recipients='Something@somewhere.com',
@subject='My subject',
@body=@HtmlContent,
@body_format = 'HTML'
END
比特大猩猩,你可能应该使用nvarchars而不是varchars,这可能是不可能的。但这可能会让你开始。如果将SELECT*从表中转换为数据,则真正需要做的就是从实际表中转换
编辑:哦,你也需要更改底部电子邮件中的详细信息你可以用查询结果构建一个html正文字符串,并在sp_send_dbmail中指定@body_format=N'html'