Oracle - Realizar un update a partir de un select donde no debo considerar los campos null

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 4 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

Realizar un update a partir de un select donde no debo considerar los campos null

Publicado por Angel Antonio (3 intervenciones) el 07/12/2017 15:00:42
Saludos,


Estimados, tengo el desconocimiento de como realizar un update de una tabla a partir de un select de otra tabla con campos en común,y en donde la tabla a consultar algunos de los campos están vacíos o nulos, lo que indica sobre que campos se pueden actualizar,

ejemplo: en un registro me pueden venir 5 campos a actualizar, en otro registro solo 2 y así sucesivamente.
Como puedo hacer el match con los campos a actualizar en la tabla del update.

Disculpe mi ignorancia y espero me puedan ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-2
Responder

Realizar un update a partir de un select donde no debo considerar los campos null

Publicado por Angel Antonio (1 intervención) el 11/12/2017 11:55:33
Saludos Rafael,

Totalmente cierto disculpa por no hacer una descripción mas completa.

te explico, Tengo una tabla de trabajo llamada ProdSVL, esta tabla será llenado mediante un XML, el cual es disparado desde una aplicación que realiza una modificación de un vendedor y sus producto.


luego tengo la tabla maestra llamada PRDSVLMT, en donde tengo registro de los vendedores y los productos asociados a estos.

Las dos tablas tienen campo en común, obviamente, pero desde la tabla de trabajo puede que algunos atributos no se tengan que modificar ya que no vinieron en el XML y por lo tanto en la tabla de trabajo se guardan en null.

Ejemplos de los campos,

Vendedor_ID, Nombre, Direccion, Nombre Fiscal, Prod_ID, Descripción_prod, Marca, tipo, costo, cantidad.


A partir de los campos que si se registraron en el XML y se guardaron en la tabla de trabajo, yo debo realizar el update de la tabla maestra.

Espero esta brave descripción te de una idea mas clara.

Gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Realizar un update a partir de un select donde no debo considerar los campos null

Publicado por Rafael (328 intervenciones) el 12/12/2017 08:45:17
Hola, Angel:

¿Que has intentado con el MERGE?

Bueno a ver si este ejemplo te ayuda mas:
1
2
3
4
5
6
7
8
9
10
MERGE INTO PRDSVLMT TM
   USING (SELECT  Nombre, Direccion, Nombre Fiscal, Prod_ID,
                  Descripción_prod, Marca, tipo, costo, cantidad
           FROM ProdSVL) TT
   ON (TM.Vendedor_ID = TT.Vendedor_ID)
   WHEN MATCHED THEN
        UPDATE SET TM.Nombre = NVL(TT.Nombre, TM.Nombre)
                , TM.Direccion = NVL(TT.Direccion, TM.Direccion)
...
;

A ver no dices ni cual es el campo en comun por lo que supondre es el Vendedor_ID....
Con una instruccion similar a esto puedes hacer la consulta en la tabla de trabajo "TT" no se si requiera otra condicion supongo que si...

Luego igualar el campo comun, que sera el que dispare la accion.

Cuando coincida el campo comun hara un UPDATE, remplazando el valor, ahora uso el NVL por que si el campo en la tabla de trabajo es NULO entonces que mantenga el valor que tenia el campo en la Tabla Maestra (TM).

Obviamente este es un ejemplo y dificilmente funcionara por que le faltan datos, y la parte que debe hacer si no hace MATCH que seguro será in INSERT o no???

Ahora bien te comento es mas facil ayudarte si:

1. Proporcionas toda la información relevante al caso.
2. Pones lo que has intentado y no funciona (mejor si lo encapsulas como codigo) por que podemos copiar, corregir y pegar no tener que teclearlo todo.
3. SI intentas algo por que seguro descubres cosas que nosotros desde este texto no vemos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar