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
SQL Server – Error 3414, servicio no inicia - El error 3414 se produce generalmente cuando el motor de la base de datos SQL Server sufre algún evento…
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);