Ejecución Masiva de un Procedimiento Almacenado + XML
Hola Gente,
Continuando con el tratamiento de XML con SQL Server 2005, al igual que el anterior post, donde comentábamos como efectuar masivamente actualizaciones , inserciones, etc. En esta oportunidad , ejecutaremos masivamente un procedimiento almacenado teniendo como fuente de sus parámetros un XML.
Al igual que en el caso anterior, le pasamos como parámetro un tipo XML , internamente construye una estructura, y la insertamos en un Tabla Temporal, luego ejecutamos el Procedimiento Almacenado tantas veces como registros tenga, claro cuando insertamos sobre la tabla temporal insertamos los datos del XML que son parámetros del Procedimiento a ejecutar masivamente.
Esto también lo podríamos usar utilizando un CURSOR , pero para que complicarnos, con una Tabla Temporal Basta.
Código:
Procedimiento almacenado:
El procedimiento “usp_EJECUTAR” lo vamos a ejecutar tantas veces como registros tenga mi tabla temporal, ya que esta fue insertada desde mi XML.
OJO: “OPENXML(@hDoc, ‘/DocumentElement/Table’)” el Nombre “Table” depende mucho la mi fuente de datos a expotar del XML ,si es un DataTable este se llamaria tambien “Table”.
|
CREATE PROCEDURE [dbo].[usp_Ejectuar_Procedimiento] @XML xml, @FechaInicial datetime, @FechaFinal datetime AS BEGIN
DECLARE @hDoc int EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML CREATE TABLE #Temp ( CodigoPersonaId int identity(1,1), CodigoPersona char(12) ) INSERT INTO #Temp ( CodigoPersona ) SELECT CodigoPersona FROM OPENXML(@hDoc, ‘/DocumentElement/Table’) WITH ( CodigoPersona char(12) ‘CodigoPersona’ )XMLInsert
DECLARE @Loop INT DECLARE @Counter INT DECLARE @CodigoPersona CHAR(12) SET @Loop = isnull((SELECT count(*) FROM #Temp),0) SET @Counter = 1 WHILE @Loop >0 and @Counter <= @Loop BEGIN SELECT @CodigoPersona = CodigoPersona FROM #Temp WHERE CodigoPersonaId = @Counter SET @Counter = @Counter + 1 EXEC usp_EJECUTAR @FechaInicial, @FechaFinal,@CodigoPersona END
EXEC sp_xml_removedocument @hDoc
END |
Bueno , espero les sea de Ayuda.
Un Saludo desde “La Virgen” – Huamachuco, Perú a 3500 msnm
Acerca de esta Entrada
You’re currently reading “Ejecución Masiva de un Procedimiento Almacenado + XML,” an entry on Jose Fabricio Rojas - Desarrollo ALTer.NETivo
- Publicado:
- 24 Marzo 2009 / 1:10 PM
- Categoría:
- .NET, SQL Server 2005, XML
- Etiquetas:
- .NET, SQL Server 2005, XML
Todavía no hay comentarios
Ir al formulario de comentarios | comment rss [?] | trackback uri [?]