Crear un procediemiento

05/02/2004 - 15:30 por Magno | Informe spam
Saludos.

Hola amigos, estoy comenzando con esto de los
procedimientos almacenados y tengo una pequeña pregunta,
por favor si pueden ayudarme con lo siguiente:

La primera BD tiene:

cedula
nombre
telefonos
direccion

La segunda BD tiene:

cedula
nombre
telefonos
direccion

Lo que quiero es hacer a travez de un procedimeiento que
lea la primera BD y bvusque en la segunda por el campo
cedula. Si lo encuentra debe actualizarlo, de lo contrario
debe insertarlo como nuevo.

Gracias por la ayuda que puedan brindarme.

Magno

Preguntas similare

Leer las respuestas

#1 Javier Loria
05/02/2004 - 16:08 | Informe spam
Hola:
El siguiente codigo que te envio va sin probar, pero debe ser algo como:
=¾GIN TRAN
Actualiza
UPDATE Tabla
SET Nombre = Otra.Nombre,
Telefonos = Otra.Telefonos,
Direccion = Otra.Direccion
FROM Tabla JOIN BD2..Tabla AS Otra
ON Tabla.Cedula=Otra.Cedula
WHERE (Tabla.Nombre <> Otra.Nombre)
OR (Tabla.Telefonos <> Otra.Telefonos)
OR (Tabla.Direccion <>Otra.Direccion)
INSERT Tabla (Cedula, Nombre, Telefonos, Direccion)
SELECT Cedula, Nombre, Telefonos, Direccion
FROM BD2..Tabla
WHERE Cedula NOT IN (SELECT Cedula FROM Tabla)
COMMIT
==Podria ocurrir que sea mas facil borrar e insertar que actualizar, pero si
hay llaver foraneas no podras hacerlo. Esto seria algo como:
=¾GIN TRAN
DELETE Tabla
WHERE Cedula IN (SELECT Cedula FROM DB2..Tabla)
INSERT Tabla (Cedula, Nombre, Telefonos, Direccion)
SELECT Cedula, Nombre, Telefonos, Direccion
FROM DB2..Tabla
COMMIT TRAN
==
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Magno escribio:
Saludos.

Hola amigos, estoy comenzando con esto de los
procedimientos almacenados y tengo una pequeña pregunta,
por favor si pueden ayudarme con lo siguiente:

La primera BD tiene:

cedula
nombre
telefonos
direccion

La segunda BD tiene:

cedula
nombre
telefonos
direccion

Lo que quiero es hacer a travez de un procedimeiento que
lea la primera BD y bvusque en la segunda por el campo
cedula. Si lo encuentra debe actualizarlo, de lo contrario
debe insertarlo como nuevo.

Gracias por la ayuda que puedan brindarme.

Magno
Respuesta Responder a este mensaje
#2 Maximiliano D. A.
05/02/2004 - 16:09 | Informe spam
hmmm aca hay algo que no me gusta para nada, porque estas repitiendo datos y
no en la segunda Base poner solo el campo Celula y que se vincule con el
Maestro de Celulas?

Claro esto no resuelve tu pregunta pero para mi (si no hay alguna razon
especial) estas diseñando mal la Base de Datos y por mas que con un Store lo
puedes arreglar seguira estando mal me explico?

de todas formas para hacerlo deberias (codigo sin probar)

Update tabla2 set nombre = tabla1.nombre,
telefonos = tabla1.telefonos,
direccion = tabla1.direccion
FROM tabla2 inner join tabla1 on
tabla2.cedula = tabla1.cedula

Insert into tabla 2
select * from tabla1 where Cedula not int (Select Cedula tabla2)

Salu2

Maximiliano Damian Accotto


"Magno" escribió en el mensaje
news:ab6d01c3ebf4$95a87a60$
Saludos.

Hola amigos, estoy comenzando con esto de los
procedimientos almacenados y tengo una pequeña pregunta,
por favor si pueden ayudarme con lo siguiente:

La primera BD tiene:

cedula
nombre
telefonos
direccion

La segunda BD tiene:

cedula
nombre
telefonos
direccion

Lo que quiero es hacer a travez de un procedimeiento que
lea la primera BD y bvusque en la segunda por el campo
cedula. Si lo encuentra debe actualizarlo, de lo contrario
debe insertarlo como nuevo.

Gracias por la ayuda que puedan brindarme.

Magno
Respuesta Responder a este mensaje
#3 MAGNO
05/02/2004 - 17:42 | Informe spam
Gracias por tu respuesta.

La duplicidad de los datos se debe a que estoy uniendo dos
sistemas que guardan mucha similitud, para evitar tener
datos repetidos en diferentes BD.

D todas forma gracias y voy a probar tu sugerencia.

Muchisimas gracias.

Magno
////////////////////////////
hmmm aca hay algo que no me gusta para nada, porque estas


repitiendo datos y
no en la segunda Base poner solo el campo Celula y que se


vincule con el
Maestro de Celulas?

Claro esto no resuelve tu pregunta pero para mi (si no


hay alguna razon
especial) estas diseñando mal la Base de Datos y por mas


que con un Store lo
puedes arreglar seguira estando mal me explico?

de todas formas para hacerlo deberias (codigo sin probar)

Update tabla2 set nombre = tabla1.nombre,
telefonos = tabla1.telefonos,
direccion = tabla1.direccion
FROM tabla2 inner join tabla1 on
tabla2.cedula = tabla1.cedula

Insert into tabla 2
select * from tabla1 where Cedula not int (Select Cedula


tabla2)

Salu2

Maximiliano Damian Accotto


"Magno" escribió en el mensaje
news:ab6d01c3ebf4$95a87a60$
Saludos.

Hola amigos, estoy comenzando con esto de los
procedimientos almacenados y tengo una pequeña pregunta,
por favor si pueden ayudarme con lo siguiente:

La primera BD tiene:

cedula
nombre
telefonos
direccion

La segunda BD tiene:

cedula
nombre
telefonos
direccion

Lo que quiero es hacer a travez de un procedimeiento que
lea la primera BD y bvusque en la segunda por el campo
cedula. Si lo encuentra debe actualizarlo, de lo contrario
debe insertarlo como nuevo.

Gracias por la ayuda que puedan brindarme.

Magno


.

Respuesta Responder a este mensaje
#4 Gustavo Larriera [MVP]
05/02/2004 - 17:48 | Informe spam
No necesiaramente está mal diseñada la base de datos del amigo.

Pudiera ser que una tabla sea una tabla de area de staging con datos
volátiles que luego deben impactar sobre las tablas de un data warehouse.

saludos!
gux

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> wrote in message
news:%23i4zBp$
hmmm aca hay algo que no me gusta para nada, porque estas repitiendo datos


y
no en la segunda Base poner solo el campo Celula y que se vincule con el
Maestro de Celulas?

Claro esto no resuelve tu pregunta pero para mi (si no hay alguna razon
especial) estas diseñando mal la Base de Datos y por mas que con un Store


lo
puedes arreglar seguira estando mal me explico?

de todas formas para hacerlo deberias (codigo sin probar)

Update tabla2 set nombre = tabla1.nombre,
telefonos = tabla1.telefonos,
direccion = tabla1.direccion
FROM tabla2 inner join tabla1 on
tabla2.cedula = tabla1.cedula

Insert into tabla 2
select * from tabla1 where Cedula not int (Select Cedula tabla2)

Salu2

Maximiliano Damian Accotto


"Magno" escribió en el mensaje
news:ab6d01c3ebf4$95a87a60$
Saludos.

Hola amigos, estoy comenzando con esto de los
procedimientos almacenados y tengo una pequeña pregunta,
por favor si pueden ayudarme con lo siguiente:

La primera BD tiene:

cedula
nombre
telefonos
direccion

La segunda BD tiene:

cedula
nombre
telefonos
direccion

Lo que quiero es hacer a travez de un procedimeiento que
lea la primera BD y bvusque en la segunda por el campo
cedula. Si lo encuentra debe actualizarlo, de lo contrario
debe insertarlo como nuevo.

Gracias por la ayuda que puedan brindarme.

Magno


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida