Hora Inicio: 1:00 p.m
Hora Fin: 3:00 p.m
Horas Trabajadas: 3 horas
Modalidad: Virtual
En el proyecto de Visual Studio se creó una prueba para poder ver el tamaño de las imágenes en los botones de Update, Delete y Consulta.
Una vez hecha esta prueba se decidió
cambiar las imágenes a color blanco para que se vieran más e iniciar con la creación
del SP para cargar los datos del XML. Teníamos una duda al respecto por lo cual
se le realizo una consulta al profesor sobre el SP para cargar el XML
Una vez resuelta esta duda se creó
un SP básico el cual es el siguiente:
CREATE PROCEDURE [dbo].[CargarXML]
-- Parametro de entrada
@inRutaXML NVARCHAR(500)
AS
DECLARE @Datos xml/*Declaramos la variable Datos como un tipo XML*/
-- Para cargar el archivo con una variable, CHAR(39) son comillas simples
DECLARE @Comando NVARCHAR(500)= 'SELECT @Datos = D FROM OPENROWSET (BULK ' + CHAR(39) + @inRutaXML + CHAR(39) + ', SINGLE_BLOB) AS Datos(D)' -- comando que va a ejecutar el sql dinamico
DECLARE @Parametros NVARCHAR(500)
SET @Parametros = N'@Datos xml OUTPUT' --parametros del sql dinamico
EXECUTE sp_executesql @Comando, @Parametros, @Datos OUTPUT -- ejecutamos el comando que hicimos dinamicamente
DECLARE @hdoc int /*Creamos hdoc que va a ser un identificador*/
EXEC sp_xml_preparedocument @hdoc OUTPUT, @Datos/*Toma el identificador y a la variable con el documento y las asocia*/
INSERT INTO [dbo].[Puesto]
([Nombre] /*Inserta en la tabla Puestos*/
, [SalarioxHora])
SELECT *
FROM OPENXML (@hdoc, '/Datos/Puestos/Puesto' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el
PATH del nodo y el 1 que sirve para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
Nombre VARCHAR(64)
, SalarioXHora MONEY
)
INSERT INTO [dbo].[TipoEvento]
([Id]
, [Nombre])/*Inserta en la tabla Tipo Evento*/
SELECT *
FROM OPENXML (@hdoc, '/Datos/TipoEventos/TipoEvento' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve
para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
Nombre VARCHAR(64)
)
INSERT INTO [dbo].[TipoMovimiento]
([Id]
, [Nombre]
, [TipoAccion])
SELECT *
FROM OPENXML (@hdoc, '/Datos/TiposMovimientos/TiposMovimiento' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el
1 que sirve para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
Nombre VARCHAR(64)
, TipoAccion bit
)
DELETE FROM [dbo].[Empleado]/*Limpia la tabla empleados*/
DBCC CHECKIDENT ('id', RESEED, 1)/*Reinicia el identify*/
INSERT INTO [dbo].[Empleado]
([IdPuesto]
, [ValorDocumentoIdentidad]
, [Nombre]
, [FechaContratacion]
, [SaldoVacaciones]
, [EsActivo])/*Inserta en la tabla Empleados*/
SELECT *
FROM OPENXML (@hdoc, '/Datos/Empleados/Empleado' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve
para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
Puesto INT
, ValorDocumentoIdentidad INT
, Nombre VARCHAR(64)
, FechaContratacion DATE
)
INSERT INTO [dbo].[Usuario]
([id]
, [Username]
, [Password])
SELECT *
FROM OPENXML (@hdoc, '/Datos/Usuarios/usuario' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve
para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
Id INT
, Nombre VARCHAR(64)
, Pass NVARCHAR(16)
)
INSERT INTO [dbo].[Movimiento]
([IdEmpleado]
, [IdTipoMovimiento]
, [Fecha]
, [Monto]
, [IdPostByUser]
, [PostInIP]
, [PostTime])
SELECT *
FROM OPENXML (@hdoc, '/Datos/Movimientos/movimiento' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve
para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
ValorDocId INT
, IdTipoMovimiento INT
, Fecha DATE
, Monto INT
, PostByUser INT
, PostInIP VARCHAR(64)
, PostTime DATETIME
)
INSERT INTO [dbo].[Error]
([Codigo]
, [Descripcion])
SELECT *
FROM OPENXML (@hdoc, '/Datos/Error/error' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve
para retornar solo atributos*/
WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/
Codigo INT
, Descripcion VARCHAR(2000)
)
EXEC sp_xml_removedocument @hdoc/*Remueve el documento XML de la memoria*/


No hay comentarios.:
Publicar un comentario