Bartosz
Ślepowronski
Problem? Jaki
problem?
Temat: MS SQL wysylanie maila i zmienna @sql
Moze ktos bedzie mogl pomoc, mnie sie juz skonczyly koncepcje :)Probuje zaprzac database mail do wysylania raportow. Jeden z moich raportow to dynamiczny pivot, czyli zapytanie budowane z kilku elementow, ktore sa trzymane w zmiennej @sql. Niestety, z jakiegos powodu parser nie lyka zapytan przekazywanych w zmiennych.
Przykladowo, dla @body maila kontruowanego w taki sposob:
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H1>Work Order Report</H1>' +
N'<table border="1">' +
N'<tr>' + 'header' + N'</tr>' +
---zapytanie do lykniecia---
CAST ( ( SELECT td = a, '',
td = b, ''
FROM table
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
-----koniec zapytania---
N'</table>' ;
wszystko jest ok i wykonanie "print @tableHTML" zwraca:
<tr>header</tr><tr><td>dane1</td><td>dane2</td>..
Kiedy jednak zrobie
@sql = 'CAST ( ( SELECT td = a, '''',
td = b, ''''
FROM table
FOR XML PATH(''tr''), TYPE
) AS NVARCHAR(MAX) )'
a potem
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H1>Work Order Report</H1>' +
N'<table border="1">' +
N'<tr>' + 'header' + N'</tr>' +
---zapytanie do lykniecia---
@sql +
-----koniec zapytania---
N'</table>' ;
dostaje wynik w ktorym zamiast tagow html wstawiony jest po prostu tekst zapytania, czyli:
<tr>header</tr>CAST ( ( SELECT td =... itd
Jak zmusic parser do lykniecia zmiennej jako zapytania, nie jako tekstu? Jestem pewien, ze jest na to jakas prosta metoda, tylko jej nie widze :) Bede wdzieczny a pomoc.Bartosz Ślepowroński edytował(a) ten post dnia 23.07.08 o godzinie 17:52