Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kết quả Truy vấn Email dưới dạng Bảng HTML trong SQL Server (T-SQL)

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ị.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngày giờ truyền SQL

  2. 10 câu hỏi thường gặp hàng đầu về giám sát hiệu suất máy chủ SQL

  3. Chọn / Chèn phiên bản Nâng cấp:có mẫu thiết kế cho tính đồng thời cao không?

  4. Đối chiếu trong SQL Server

  5. Khắc phục Msg 8117 “Kiểu dữ liệu toán hạng varchar không hợp lệ cho toán tử sum” trong SQL Server