Desde hace varios meses que estoy trabajando con Oracle y me impresiona sus capacidades, sin embargo me ha costado el cambio por la diferente sintaxis y maneras de hacer las cosas. Cuando vienes de otros manejadores como MySql y Postgres, te acostumbras a sus métodos y estrategias, ahora al cambiar a Oracle he tenido que documentarme sobre muchos procesos, desde simples SQL a grandes procedimientos en PL/SQL.
Aunque el SQL es universal y si conoces sobre el lenguaje, fácilmente te puedes adaptar a cualquier manejador relacional, aún así debes adaptar ciertas cosas para que funcionen, porque también hay SQL que no es estándar o funciones especificas de los DBMS.
Ya estoy acostumbrados a los IF, SWITCH, CASE de los otros BDMS. En este caso, los IF en SQL de Oracle no existen pero sí existe en los procedimientos. Entonces en la parte de SQL podemos usar CASE.
Ejemplo SQL con CASE:
1 2 3 4 5 6 |
SELECT (CASE WHEN 5 > 1 THEN 'ES MAYOR' ELSE 'ES MENOR O IGUAL' END) AS resultado FROM DUAL; |
Ejemplo PL/SQL con IF utilizando una función:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
CREATE OR REPLACE FUNCTION evaluar_numero( numero NUMBER ) RETURN VARCHAR2 AS resultado VARCHAR2 (100) := ''; BEGIN IF numero > 1 THEN resultado := 'Es Mayor'; ELSIF numero = 1 THEN resultado := 'Es igual'; ELSE resultado := 'Es Menor'; END IF; RETURN resultado; END; |
Y llamando la función:
1 |
SELECT evaluar_numero(5) FROM DUAL; |
Toma en cuenta que el «ELSEIF» no existe en Oracle, sino que tiene su propia nomenclatura «ELSIF», pequeños detalles que cambian pero quitan tiempo y la paciencia. Del resto es acostumbrarse, sigue siendo SQL, sigue siendo sencillo.