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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Nahuel Garcia
21/07/2009 - 22:07 | Informe spam
Muchas gracias por tu respuesta Alejandro. No cuento con el tipo de dato
xml, porque estoy trabajando con sql server 2000. Podría devolver el xml en
una string o guardándolo en un archivo?


"Alejandro Mesa" escribió en el
mensaje de noticias:
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


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida