domingo, 4 de octubre de 2015

Al cargar la lista de corredores se encontro otro problema, hay que crea la tabla CampeonatoXCorredores luego de insertar cada corredor. Intentado varias tecnicas decidimos cargar los corredores a una tabla #temp. Se lee la tabla 1 por 1 usando un Cursor. Al leer cada linea, primero se crea el corredor correspondiente, y luego el elemento en CampeonatoXCorredor. Previamente se habia guardado el PK del campeonato en una variable usando la funcion SCOPE_IDENTITY(), para conseguir el key del corredor, se retorna el PK en la funcion que inserta un elemento a esta tabla. De esta forma se implementa:


...
set @IDCamp = SCOPE_IDENTITY()

EXEC sp_xml_preparedocument @hdoc OUTPUT, @x
SELECT * INTO #temp
FROM OPENXML (@hdoc, '/Campeonato/Corredores/Participante', 1)
WITH (Nombre varchar(50), Identificación int, FechaNacimiento date, Genero varchar(50), Email varchar(50), SobreNombre varchar(50))

Declare @TNombre varchar(50),@TIdentificacion int ,@TFechaNacimiento date ,@TGenero varchar(50),@TCorreo varchar(50),@TClave varchar(50)
Declare CT Cursor scroll
For SELECT Nombre,Identificación,  FechaNacimiento , Genero , Email , SobreNombre From #temp

Open CT
Fetch first from CT INTO @TNombre,@TIdentificacion  ,@TFechaNacimiento,@TGenero  ,@TCorreo ,@TClave

while @@FETCH_STATUS = 0
BEGIN

exec @IDCorr = CorredorInsertar @TNombre,@TIdentificacion  ,@TGenero ,@TFechaNacimiento  ,@TCorreo ,@TClave
exec CampeonatoXCorredorInsertar @IDCamp, @IDCorr, 0, '00:00:00',0,0

Fetch next from CT INTO @TNombre,@TIdentificacion  ,@TFechaNacimiento,@TGenero  ,@TCorreo ,@TClave

END
...


Luego, cree el procedimiento que lista la informacion de los corredores expulsados en un campeonato. Se hace con un simple select.
Select Corredor.CorredorID,Corredor.Nombre,Corredor.Identificacion,Corredor.Correo,Corredor.FechaNacimiento,Corredor.Genero
from Corredor,CampeonatoXCorredor where CampeonatoXCorredor.FKCorredor = Corredor.CorredorID AND CampeonatoXCorredor.FKCampeonato = @IDCampeonato AND CampeonatoXCorredor.Estado = 1


Horas: 6
Alejandro Rosales

No hay comentarios:

Publicar un comentario