Thư cơ sở dữ liệu của SQL Server có một thủ tục được lưu trữ được gọi là sp_send_dbmail
mà bạn có thể sử dụng để gửi email từ SQL Server.
Bạn có thể sử dụng quy trình được lưu trữ này để gửi kết quả truy vấn được định dạng thành một bảng HTML.
Ví dụ
Đây là một ví dụ để chứng minh.
DECLARE @body_content nvarchar(max);
SET @body_content = N'
<style>
table.GeneratedTable {
width: 100%;
background-color: #ffffff;
border-collapse: collapse;
border-width: 2px;
border-color: #ffcc00;
border-style: solid;
color: #000000;
}
table.GeneratedTable td, table.GeneratedTable th {
border-width: 2px;
border-color: #ffcc00;
border-style: solid;
padding: 3px;
}
table.GeneratedTable thead {
background-color: #ffcc00;
}
</style>
<table class="GeneratedTable">
<thead>
<tr>
<th>ArtistId</th>
<th>ArtistName</th>
<th>ActiveFrom</th>
</tr>
</thead>
<tbody>' +
CAST(
(SELECT td = ArtistId, '',
td = ArtistName, '',
td = ActiveFrom, ''
FROM Music.dbo.Artists
FOR XML PATH('tr'), TYPE
) AS nvarchar(max)
) +
N'</tbody>
</table>';
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = @body_content,
@body_format = 'HTML',
@subject = 'As discussed';
Trong trường hợp này, tôi khai báo một biến có tên là @body_content
và đặt tất cả mã HTML vào đó. Tôi cũng thêm một số kiểu bằng cách sử dụng CSS, để bảng có các đường viền, tiêu đề có thể nhìn thấy, v.v. Biến này được sử dụng làm giá trị của @body
đối số khi gửi email với sp_send_dbmail
thủ tục.
Nếu bạn không cần áp dụng bất kỳ kiểu nào, chỉ cần xóa <style></style>
thẻ và mọi thứ ở giữa. Trong trường hợp này, bạn cũng có thể xóa class="GeneratedTable"
bit từ bảng thực tế.
Nếu bạn muốn thay đổi kiểu, hãy xem trình tạo bảng của tôi tại Quackit. Bạn có thể sử dụng nó để tạo các kiểu bảng của mình, sau đó bạn có thể sao chép / dán các kiểu đó vào mã gửi vào email của bạn.
Mã T-SQL được chuyển tới CAST()
là hàm trả về kết quả truy vấn, mỗi kết quả trong hàng bảng của riêng chúng (<tr>
phần tử) và mỗi cột trong <td>
của chính nó phần tử.
Đảm bảo bao gồm @body_format = 'HTML'
. Đây là những gì gửi email ở định dạng HTML. Nếu bạn bỏ qua điều này (hoặc nếu bạn đặt nó thành TEXT
), người nhận sẽ nhận được mã HTML thô, thay vì mã được hiển thị.