Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/06/2010, 10:50
dvp28
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Ayuda con un Cursor

ante todo, soy nuevo en esto y es raro q yo este dando solucion o almenos eso espero, bueno ahi te va el codigo:


ALTER PROCEDURE [dbo].[TraspasoDeDatos]
AS
BEGIN
DECLARE @cod AS VARCHAR (50)
DECLARE @Ncod AS int
DECLARE @Nver AS VARCHAR (1)
DECLARE @nombre AS VARCHAR (50)
DECLARE @edad
DECLARE traspaso_personas cursor for
SELECT [codigo]
,[nombre]
,[edad]
FROM personas_nuevas
OPEN traspaso_personas
FETCH next from traspaso_personas
INTO @cod,@nombre,@edad
while @@fetch_status = 0
begin
fetch next from traspaso_personas
INTO @cod,@nombre,@edad
SET @Ncod=CONVERT(INT,SUBSTRING(@cod,0,CHARINDEX('-', @cod)))
SET @Nver= SUBSTRING (@cod,CHARINDEX('-', @cod)+1,LEN(@cod))

if exist(select * from personas_antiguas where id_cod=@cod) then
begin
update personas_antiguas set nombre=@nombre,edad=@edad where id_cod=@cod
end
else
begin
INSERT INTO personas_antiguas (id_cod,verif,nombre,edad) VALUES (@Ncod,@Nver,@nombre,@edad)
end

end
close traspaso_personas
deallocate traspaso_personas
END
END


Creo que usando "exist" o "not exist" saldria:

-exist(select * from personas_antiguas where id_cod=@cod), el exist lo q hace es devolverte un valor logico si el select te devuelve filas en caso contrario false, lo q quiere decir q si el exist te devuelve true ,la persona existe en tu tabla personas antiguas