29/06/2010, 16:36
|
| | Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 6 meses Puntos: 0 | |
Respuesta: Ayuda con un Cursor Hola amigo dvp28:
efectivamente asi es como tengo el codigo, tal cual tu lo colocas : Cita: UPDATE personas_antiguas
SET nombre=nombre
,edad=edad
FROM personas_antiguas A
INNER JOIN personas_nuevas N ON A.cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))
INSERT INTO personas_antiguas ([id_cod],[verif],[nombre],[edad])
SELECT CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))
,SUBSTRING(N.cod,CHARINDEX('-', N.cod)+1,LEN(N.cod))
,N.nombre
,N.edad
FROM personas_nuevas N
WHERE NOT EXISTS(
SELECT 1 FROM personas_antiguas A WHERE A.id_cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))) Lo que me haz dejado intrigado tu, es que flaviovich en el ultimo SELECT coloca: Cita: SELECT 1 FROM personas_antiguas Y tu colocas: Cita: SELECT 1,2 FROM personas_antiguas Para que es esto??
Ahora bien, tal cual esta ese codigo, la query no hace nada, pero si coloco la ruta completa de la Base y las tablas, solo me ejecuta el UPDATE.
el codigo es asi: Cita: UPDATE [Movimiento_Personas].[dbo].[personas_antiguas]
SET nombre=nombre
,edad=edad
FROM [Movimiento_Personas].[dbo].[personas_antiguas] A
INNER JOIN [Movimiento_Personas].[dbo].[personas_nuevas] N ON A.cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))
INSERT INTO [Movimiento_Personas].[dbo].[personas_antiguas] ([id_cod],[verif],[nombre],[edad])
SELECT CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))
,SUBSTRING(N.cod,CHARINDEX('-', N.cod)+1,LEN(N.cod))
,N.nombre
,N.edad
FROM [Movimiento_Personas].[dbo].[personas_nuevas] N
WHERE NOT EXISTS(
SELECT 1 FROM [Movimiento_Personas].[dbo].[personas_antiguas] A WHERE A.id_cod = CONVERT(INT,SUBSTRING(N.cod,0,CHARINDEX('-', N.cod)))) Este codigo como les mencionaba, me ejecuta el UPDATE, pero no asi el INSERT, mencionandome el error que les comentaba en el mensaje anterior: Cita: Violation of PRIMARY KEY constraint 'PK_personas_antiguas_1'. Cannot insert duplicate key in object 'dbo.personas_antiguas'. gracias de antemano y estare atento a sus comentarios |