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