Principales respuestas
Resultado XML a variable ?

Pregunta
-
Estimados.
En un SS2008 tengo: (la variable @campos debe ser asi pues es dinamica)
SET @TSQL = 'Select ' + @campos + ' From ##Tabla FOR XML PATH(' + '''' + 'tr' + '''' + '), TYPE'
EXECUTE sp_executesql @TSQL
El resultado es el esperado, pero quisiera que dicho resultado que es una sola linea la pueda asignar a una variable para luego poder usarla.
He intentando:
Declare @rs XML
SET @ParmDefinition = N'@Resultado XML OUTPUT'
EXECUTE sp_executesql @TSQL, @ParmDefinition, @Resultado=@rs OUTPUT;
SELECT @rs
Pero @rs me devuelve NULL
Gracias por cualquier ayuda al respecto.
Atte.
CristianPM
DBA SQL Server Santiago/Chile
jueves, 1 de mayo de 2014 2:20
Respuestas
-
Ve si esto te es de ayuda.
USE Northwind; GO DECLARE @sql nvarchar(MAX), @columns nvarchar(MAX), @x xml; SELECT @columns = N'CustomerID AS [Order/@CustomerID], OrderID AS [Order/@OrderID]'; SET @sql = N'SET @x = (SELECT TOP(10)' + @columns + N' FROM dbo.Orders ORDER BY OrderID FOR XML PATH(''''), ROOT(''Orders''), TYPE);' EXEC sp_executesql @sql, N'@x xml OUTPUT', @x OUTPUT; SELECT @x AS x; GO /* <Orders> <Order CustomerID="VINET" OrderID="10248" /> <Order CustomerID="TOMSP" OrderID="10249" /> <Order CustomerID="HANAR" OrderID="10250" /> <Order CustomerID="VICTE" OrderID="10251" /> <Order CustomerID="SUPRD" OrderID="10252" /> <Order CustomerID="HANAR" OrderID="10253" /> <Order CustomerID="CHOPS" OrderID="10254" /> <Order CustomerID="RICSU" OrderID="10255" /> <Order CustomerID="WELLI" OrderID="10256" /> <Order CustomerID="HILAA" OrderID="10257" /> </Orders> */
AMB
Some guidelines for posting questions...
- Editado HunchbackMVP jueves, 1 de mayo de 2014 19:22
- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator viernes, 2 de mayo de 2014 11:11
- Marcado como respuesta CMAPM viernes, 2 de mayo de 2014 14:54
jueves, 1 de mayo de 2014 19:21
Todas las respuestas
-
Hola.
Sin conocer el motivo desde un punto de vista más general, lo que puedo sugerirte es que vuelques el resultado de sq_executesql en una tabla o una variable temporal y que luego recuperes el registro de la forma habitual:
declare @rs XML create table #MiXML (rs XML) ... insert #MiXML exec sp_executesql... select @rs = rs from #MiXML
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrandejueves, 1 de mayo de 2014 6:41Moderador -
Ve si esto te es de ayuda.
USE Northwind; GO DECLARE @sql nvarchar(MAX), @columns nvarchar(MAX), @x xml; SELECT @columns = N'CustomerID AS [Order/@CustomerID], OrderID AS [Order/@OrderID]'; SET @sql = N'SET @x = (SELECT TOP(10)' + @columns + N' FROM dbo.Orders ORDER BY OrderID FOR XML PATH(''''), ROOT(''Orders''), TYPE);' EXEC sp_executesql @sql, N'@x xml OUTPUT', @x OUTPUT; SELECT @x AS x; GO /* <Orders> <Order CustomerID="VINET" OrderID="10248" /> <Order CustomerID="TOMSP" OrderID="10249" /> <Order CustomerID="HANAR" OrderID="10250" /> <Order CustomerID="VICTE" OrderID="10251" /> <Order CustomerID="SUPRD" OrderID="10252" /> <Order CustomerID="HANAR" OrderID="10253" /> <Order CustomerID="CHOPS" OrderID="10254" /> <Order CustomerID="RICSU" OrderID="10255" /> <Order CustomerID="WELLI" OrderID="10256" /> <Order CustomerID="HILAA" OrderID="10257" /> </Orders> */
AMB
Some guidelines for posting questions...
- Editado HunchbackMVP jueves, 1 de mayo de 2014 19:22
- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator viernes, 2 de mayo de 2014 11:11
- Marcado como respuesta CMAPM viernes, 2 de mayo de 2014 14:54
jueves, 1 de mayo de 2014 19:21 -
Mil Gracias, funciono perfecto.
DBA SQL Server Santiago/Chile
viernes, 2 de mayo de 2014 14:55