SQL: sp_send_db_mail: usuwanie zbędnych elementów zapytania

21-Lut-2017

Kiedy wysyłasz wynik zapytania jako załącznik do maila korzystając z procedury sp_send_db_mail dzieją się dwie brzydkie rzeczy:

  • do wygenerowanego pliku dołaczany jest tekst np 3 row(s) affected
  • między nagłówkiem a danymi pojawia się kreska rozdzielająca te dwa elementy ———————————–

Z pierwszym problemem dosyć łatwo sobie można poradzić. W przekazywanym parametrze @query zamiast samego zapytania, np.:

SELECT id, name FROM database.dbo.table

zapisz

SET NOCOUNT ON;
SELECT id, name FROM database.dbo.table

Gorzej jednak z pomijaniem kreseczek… trzeba użyć sztuczki. Po pierwsze rezygnujemy z generowania nagówka dodając do sp_send_db_mail parametr: @query_result_header = 0

A jak teraz dodać warunek? Zapytanie zmień na UNION dwóch zapytań. Pierwsze z nich wygeneruje to co ma być w załączniku, a drugie zwróci właściwe dane. W efekcie mamy więc:

SET NOCOUNT ON;
SELECT 'id' AS id, 'name' AS name 
UNION ALL
SELECT id, name FROM database.dbo.table

Dodaj komentarz:

Autor: Rafał Kraik