Cuando queremos hacer un UPDATE pero necesitamos filtrar los datos con otra tabla, pues lo lógico es que utilicemos un FROM y un WHERE. En MSSQL esto es muy normal y transparente, pero a la hora de que pasemos ese mismo código a ORACLE, pues no nos va a permitir realizar la consulta. Esto es debido a que en ORACLE no se permite el FROM.
Aquí se muestran los dos códigos para que se pueda ver la diferencia.
MSSQL
UPDATE T_PROVINCIAS SET ind_estado = 'S' FROM T_PAISES P WHERE P.codigo_pais = T_PROVINCIAS.codigo_pais
MERGE in SQL Server for Insert, Delete and Update with two tables - Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single…
En ORACLE como no se permite el FROM dentro del UPDATE tendremos que hacer una subconsulta dentro del UPDATE y validar con un EXISTS, para poder filtrar los datos que necesitamos.
UPDATE T_PROVINCIAS SET ind_estado = 'S' WHERE EXISTS( SELECT * FROM T_PAISES CM WHERE T_PROVINCIAS.codigo_pais = CM.codigo_pais);