Quiero realizar unos updates de una tabla a partir de otra segunda tabla, que contiene unos campos con datos nuevos a actualizar de la primera.
Por ejemplo, TABLA1 tiene las columnas 1, 2, 3, 4 y 5, y TABLA2 las columnas 1, 2, y 5.
Quiero realizar una actualización total de la TABLA1 a partir de todos los registros de la TABLA2, el problema está en que si algún campo de la TABLA2 es nulo, no quiero actualizarlo (quiero dejar el valor que hubiera en TABLA1).
¿Cómo realizo esto (desde PL-SQL)?
Opciones:
Podría o bien ir haciendo "IF IS NULL" con cada campo, y haciendo un update por cada campo (lo cual tiene de malo que sería bastante lento, pues haría un update por columna, y por registro), o de algún modo realizar un único update por registro leído de la tabla2; pero para eso, ¿cómo discrimino cuándo hacer update de un campo y cuándo no (o si lo realizo, que sea para dejar el valor anterior)? ¿Puedo meter el "if" dentro del update, o si no, puedo crear una cadena de texto que contenga la sentencia UPDATE y que sea la que luego ejecute?
Es decir:
¿Puedo hacer esto?
UPDATE TABLA1 SET CAMPO1=(IF TABLA2.CAMPO2 IS NULL ... ELSE...)
¿Puedo hacer esto?
str='UPATE SET'+... (construir la sentencia).
str+=...
Execute(str)
¿Puedo hacer otra cosa que no conozca y no haya dicho?