2012-08-27 88 views
0

我正嘗試使用相同的數據創建短消息和完整格式的電子郵件。 如何將2行從能夠轉換爲SQL字符串用於文本電子郵件的目的。T-SQL將多個行轉換爲短消息文本字符串/消息

我在我的表中只有4行,並且使用我自己的標準爲他們指定了「好」或「壞」等級。完全格式化的電子郵件將顯示所有四行,但SMS需要顯示不正確的行。

我可能會使用sp_send_dbmail發送兩封電子郵件,有些人可能希望使用Outlook將短信發送到他們的手機與短信文本,其他人會在手機上使用不同的警報系統,只需閱讀他們的電子郵件設備。

下面是我想要做的一個例子。 @htmlEmailText工作正常,因爲它使用「FOR XML」子句。

if @format = 'EMAIL' 
    begin 
     SET @SMSEmailText = 
      'BizTalk Feed Alert ' + 
      CAST (( 
      SELECT Airline, 'Feed=' + ST.Feed, 'MinutesSinceLastMessage=' + MinutesSinceLastMessage 
       where Rating = 'BAD') 
       ) AS NVARCHAR(MAX)) 
       ; 
     SET @htmlEmailText = 
      N'<H1>BizTalk Feed Alert</H1>' + 
      N'<table border="1">' + 
      N'<tr>' + 
      N'<th>Rating</th>' + 
      N'<th>Airline</th>' + 
      N'<th>Feed</th>' + 
      N'<th>MinutesSinceLastMessage</th>' + 
      N'<th>AlertMinutes</th>' + 
      N'<th>LocalDateTimeLastMsgRcvd</th>' + 
      N'<th>CountMessageInLastHour</th>' + 
      N'<th>AvgCountPerSameHour</th>' + 
      CAST ((SELECT td = Rating,  '', 
          td = Airline, '', 
          td = ST.Feed, '', 
          td = MinutesSinceLastMessage, '', 
          td = AlertMinutes, '', 
          td = LocalDateTimeLastMsgRcvd, '', 
          td = CountMessageInLastHour, '', 
          td = AvgCountPerSameHour, '' 
         from @StatsTable ST 
         left outer join @CountTable CT on ST.Feed = CT.Feed 
         left outer join @AvgTable AT on ST.Feed = AT.Feed 
         FOR XML PATH('tr'), TYPE 
      ) AS NVARCHAR(MAX)) + 
      N'</table>' 
      ; 
    end 
+0

就這樣,我明白了,下面的查詢返回多行,並且你想要將所有這些連接成一個字符串用於SMS消息? 'SELECT Airline,'Feed ='+ ST.Feed,'MinutesSinceLastMessage ='+ MinutesSinceLastMessage where rating ='BAD'' – LittleBobbyTables

+0

是的,這就是我想要做的。 – NealWalters

回答

1

你可以聲明nvarchar(max)變量來保存行,然後將它們連接起來是這樣的:

DECLARE @BadText nvarchar(max) 
SET @BadText = '' 
SELECT @BadText = @BadText + Airline + '; Feed=' + ST.Feed + '; ' + 
    'MinutesSinceLastMessage=' + MinutesSinceLastMessage 
WHERE Rating = 'BAD' 

SET @SMSEmailText = 
     'BizTalk Feed Alert ' + @BadText 

現在,你還需要施放任何ints/floatsnvarchars爲好,你將不得不根據自己的喜好來修改你的格式,但應該這樣做。

+0

很酷並且容易實現,謝謝。 – NealWalters