sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)のHTMLテーブルとしての電子メールクエリ結果

    SQL Serverのデータベースメールには、sp_send_dbmailというストアドプロシージャがあります SQLServerからの電子メールの送信に使用できます。

    このストアドプロシージャを使用して、HTMLテーブルにフォーマットされたクエリ結果を送信できます。

    実例を示します。

    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';

    この場合、@body_contentという変数を宣言します すべてのHTMLコードをその中に入れます。また、CSSを使用していくつかのスタイルを追加し、テーブルに境界線やヘッダーなどが表示されるようにします。この変数は、@bodyの値として使用されます。 sp_send_dbmailを使用してメールを送信するときの引数 手順。

    スタイルを適用する必要がない場合は、<style></style>を削除するだけです。 タグとその間のすべて。この場合、class="GeneratedTable"を削除することもできます 実際のテーブルからのビット。

    スタイルを変更したい場合は、Quackitで私のテーブルジェネレーターをチェックしてください。これを使用してテーブルスタイルを生成し、それらのスタイルをコピーして、メールに送信されるコードに貼り付けることができます。

    CAST()に渡されるT-SQLコード 関数は、それぞれ独自のテーブル行(<tr>)にクエリ結果を返すものです。 要素)、および独自の<td>内の各列 要素。

    必ず@body_format = 'HTML'を含めてください 。これは、HTML形式で電子メールを送信するものです。これを省略した場合(またはTEXTに設定した場合) )、受信者はレンダリングされたコードではなく、生のHTMLコードを受け取ります。


    1. SQL Serverで無効になっているすべてのCHECK制約を返す方法(T-SQLの例)

    2. JSON_CONTAINS_PATH()MySQLの例

    3. SQL Server(T-SQL)で列のデータ型を変更する方法

    4. 非特権匿名アクセスを介したPostgreSQLのユーザーアカウントのセルフプロビジョニング