본문 바로가기
Database/MSSQL

MSSQL - SSMS 활용하여 데이터 메일로 받기

by BeomBe 2023. 12. 30.
반응형

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