반응형
SSMS에서 필요한 데이터를 이메일로 받을수 있다.
업무상에서 편이성을 얻을 수 있고, 스케쥴러에 등록한다면 보다 더 쉽게 사용할 수 있다.
@tableHTML을 이용하여 컬럼 헤더를 생성시켜주고, 진행하면 된다.
만약 헤더에 컬럼명을 더 추가하고 싶다면,
아래 보이는 <tr><th>Header</th></tr>에 <th>Header2</th> 와 같이 추가시켜주면 된다.
또한, td값들도 마찬가지인데, 아래 예시는 모든 컬럼을 다 가져오지만, Header와 맞춰 값을 가져오면 된다.
ex) name as td,
price as td
-- Sending time.
DECLARE @subject varchar(max) = 'Title';
DECLARE @Recipients varchar(500) = 'XXX@XXX.com';
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H2>' + @subject + N'</H2>' +
N'<style type="text/css"> table {width: 100%; border-collapse: collapse; border-spacing: 0; } td, th { border: 1px solid #CCC; height: 24px; } ' +
N'th { background: #F3F3F3; font-weight: bold; } ' +
N'td { background: #FAFAFA; text-align: center; } ' +
N'tr:nth-child(even) td { background: #F1F1F1; } ' +
N'tr:nth-child(odd) td { background: #FEFEFE; } ' +
N'tr.total td { background: #C3F3F3; font-weight: bold; } ' +
N'td.rightalign { text-align: right; } td.leftalign { text-align: left; } ' +
N'table.data {font-family:Tahoma,Arial,Verdana,sans-serif;font-size:12px;line-height:1.2} ' +
N'</style>' +
N'<table class="data">' +
N'<tr><th>Header</th></tr>' +
CAST ( (
SELECT
*
FROM
WHERE
FOR XML RAW('tr'), ELEMENTS
) AS NVARCHAR(MAX) ) +
N'</table>';
IF @tableHTML IS NOT NULL
BEGIN
DECLARE @mailid int;
EXECUTE [msdb].[dbo].[sp_send_dbmail]
@profile_name = 'N41'
,@recipients = @Recipients
,@body = @tableHTML
,@subject = @subject
,@body_format = 'HTML'
,@mailitem_id = @mailid OUTPUT
SELECT @mailid
END
반응형
'Database > MSSQL' 카테고리의 다른 글
[MSSQL] 날짜(date) 관련 함수 (26) | 2024.02.15 |
---|---|
[MSSQL] Union (32) | 2024.02.13 |
[MSSQL] With 문 (39) | 2024.02.08 |
[MSSQL] Pivot (36) | 2024.02.08 |
[MSSQL] TOP, TOP으로 중간 행부터 데이터 가져오기 (1) | 2023.12.29 |