Procedure que devuelva xml de una tabla

21/07/2009 - 20:14 por Nahuel Garcia | Informe spam
Buenas tardes. Quisiera crear un procedimiento almacenado que me devuelva un
xml (o lo genere en un archivo) dada una tabla.
Estoy haciendo algo así pero no me funciona.

CREATE PROCEDURE dbo.GenInf
@tabla nvarchar(50),
@xml nvarchar(4000) OUTPUT
as
SET @xml = (SELECT * FROM @tabla FOR XML AUTO)

Agradezco cualquier ayuda que puedan darme
 

Leer las respuestas

#1 Alejandro Mesa
21/07/2009 - 21:48 | Informe spam
Nahuel Garcia,

No se puede usar un parametro o variable como fuente de la clausula "from".
si deseas indigar mas, tendras que requerrir a sql dinamico, pero te advierto
que debes tener cuidado con la injeccion de codigo sql.

Otra cosa, no es buena practica usar "*" en la lista de columnas de la
clausula "select". Esto te puede traer problemas, porque no todos los tipos
de datos pueden ser exportados como xml.

Ejemplo:

USE Northwind;
GO

CREATE PROCEDURE dbo.uspX
@tn sysname,
@x XML OUTPUT
AS
DECLARE @sql NVARCHAR(MAX);

SET @sql = N'SET @x = (SELECT * FROM ' + QUOTENAME(@tn) + N' FOR XML AUTO,
TYPE)';

EXEC sp_executesql @sql, N'@x XML OUTPUT', @x OUTPUT;
GO

DECLARE @x XML;

EXEC dbo.uspX 'Orders', @x OUTPUT

SELECT @x;
GO

DROP PROCEDURE dbo.uspX;
GO


AMB



"Nahuel Garcia" wrote:

Buenas tardes. Quisiera crear un procedimiento almacenado que me devuelva un
xml (o lo genere en un archivo) dada una tabla.
Estoy haciendo algo así pero no me funciona.

CREATE PROCEDURE dbo.GenInf
@tabla nvarchar(50),
@xml nvarchar(4000) OUTPUT
as
SET @xml = (SELECT * FROM @tabla FOR XML AUTO)

Agradezco cualquier ayuda que puedan darme


Preguntas similares