Al añadir texto a FOR XML SQL instrucción Select
-
26-09-2019 - |
Pregunta
Hola desde una nO0b SQL, España
Tengo tres declaraciones Select
Quiero unirme a:
Selecciona 2 es una FOR XML
Seleccionar para el cual quiero añadir Selecciona 1 y 3 (que simplemente muestra parte del texto) como un tipo de encabezado / pie de página.
Los tres Selecciona funciona como es debido y forman tres partes de un .xml de podcast muy bien formada, pero necesito que terminan en uno de los resultados por lo que con el tiempo puede guardar en un archivo .xml (que será mi próximo dolor de cabeza , Supongo).
He tratado de permutaciones de +
, UNION
y JOIN
que mi mente sin experiencia puede llegar a, pero fue en vano.
Seleccionar # 1 (sólo texto)
Select '<?xml version=''1.0''?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<atom:link href="http://www.mysite.com/podcast/podcast.xml" rel="self" type="application/rss+xml" />
<itunes:image href="http://www.mysite.com/Portals/0/Images/Audio/podcast_logo.jpg"/>
<link>http://www.mysite.com/Audio.aspx</link>
<title>My Podcast</title>
<description>My Podcast's Description</description>
<language>en-us</language>
<copyright>© 2010</copyright>
<itunes:subtitle>Subtitle</itunes:subtitle>
<itunes:owner>
<itunes:name>Name</itunes:name>
<itunes:email>user@domain.com</itunes:email>
</itunes:owner>
<itunes:category text="Religion & Spirituality">
<itunes:category text="Christianity" />
</itunes:category>
<itunes:explicit>No</itunes:explicit>
<ttl> 120 </ttl>'
Seleccionar # 2 (mis datos)
Select
(Select Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 305 and UserDefinedRowId = item.UserDefinedRowId) as [title]
,(Select 'Today''s Program is ' + Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 305 and UserDefinedRowId = item.UserDefinedRowId) as [description]
,(Select Cast(Cast(FieldValue as nvarchar(max)) as DateTime) from dbo.UserDefinedData where UserDefinedFieldId = 306 and UserDefinedRowId = item.UserDefinedRowId) as [pubdate]
,(Select 'http://www.mysite.com/Portals/0/AudioFiles/RadioArchives/' + Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 308 and UserDefinedRowId = item.UserDefinedRowId) as [guid]
From
dbo.UserDefinedRows item
Where
ModuleId = 820
and UserDefinedRowID in (select UserDefinedRowID from UserDefinedData where UserDefinedFieldID = 306 and Cast(Cast(FieldValue as nvarchar(max)) as DateTime) between '2010-Nov-11' and '2010-Nov-18')
Order By
[pubdate] DESC
for XML AUTO,ELEMENTS
Seleccionar # 3 (más texto)
Select '</channel>
</rss>'
(estoy usando MS SQLSMS 2008.) (La naturaleza compleja de la segunda instrucción de selección se debe al hecho de que se está recuperando datos de una DotNetNuke "definido por el usuario Tabla / Formulario y lista", que éste debe "aplanado".)
Cualquier ayuda se agradece, gracias.
Solución
Declare @V1 VarChar(Max), @V2 VarChar(Max), @V3 VarChar(Max)
Select @V1 = ...
Set @V2 = (Select ...)
Select @V3 = ...
Select @V1+@V2+@V3
Por otra parte, echó # 1 y # 3 a XML.