2010-09-23 1 views
3

Je construis du code HTML à inclure dans le corps d'un e-mail et envoyé en utilisant sp_send_dbmail. Je voudrais aligner à droite certaines colonnes. Existe-t-il un moyen facile de le faire (à moins de le réécrire en utilisant FOR XML EXPLICIT)?Comment ajouter un attribut à la requête FOR XML PATH element-centric

declare @html varchar(max) 

set @html = '<table cellpadding=0 cellspacing=0 border=0>' 

set @html += 
    cast(
    (select 
     'Column1' as td, '', 
     'Column2' as td, '', 
     'Column3' as [td align=right] /* Would like to do something like this */ 
    for xml path('tr')) as varchar(max) 
) 

set @html += '</table>' 

Répondre

10

Cela devrait le faire. Notez que vous n'avez pas besoin d'ajouter manuellement les balises <tr> et </tr> à votre chaîne html. Ceux-ci vous sont donnés dans le cadre du for xml path('tr'). Vous avez probablement voulu ajouter </table> à la place.

declare @html varchar(max) 

set @html = '<table cellpadding=0 cellspacing=0 border=0>' 

set @html += 
    cast(
    (select 
     'Column1' as td, '', 
     'Column2' as td, '', 
     'right' as [td/@align], 'Column3' as td, '' 
    for xml path('tr')) as varchar(max) 
) 

set @html += '</table>' 

select @html 

sortie est:

<table cellpadding=0 cellspacing=0 border=0><tr><td>Column1</td><td>Column2</td><td align="right">Column3</td></tr></table> 
+0

Très belle description pour les capacités XML se trouve ici: http://sqlserverpedia.com/blog/sql-server-bloggers/xml-paths-of- gloire/ – milivojeviCH