En este artículo vamos a conocer un cambio introducido en Oracle Database 23c en la sintaxis de SQL y PL/SQL que permiten ejecutar sentencias SELECT sin la clausula FROM.
SELECT FROM DUAL
Como muchos de ustedes sabrán, hay muchas ocasiones donde deseamos mostrar algún dato que no proviene de una tabla en particular, siendo un ejemplo muy frecuente el querer obtener la fecha usando la función SYSDATE, o el resultado de cualquier otra función o expresión que no requiera datos de una tabla.
Para poder ejecutar un SELECT que no accede a ninguna tabla en particular, Oracle provee desde sus primeras versiones una tabla llamada DUAL que contiene una sola fila, la cual es utilizada para poder ejecutar un SELECT que no accede a datos de una tabla en particular, ya que la clausula FROM es obligatoria (o lo era, hasta Oracle Database 23c).
Con la sintaxis tradicional, para ver la fecha actual vamos a ejecutar lo siguiente:
SELECT SYSDATE FROM DUAL;
SYSDATE ------------------- 14-04-2023 18:52:22
SELECT sin FROM en Oracle 23c
SELECT SYSDATE;
Con esta nueva sintaxis simplificada obtendremos también el resultado deseado:
SYSDATE ------------------- 14-04-2023 18:58:58
SELECT sin FROM en PL/SQL
Que sucede en el trasfondo?
EXPLAIN PLAN FOR SELECT SYSDATE; SELECT plan_table_output FROM TABLE(dbms_xplan.display('plan_table',null,'basic'));
Al usar EXPLAIN PLAN y consultar el resultado del mismo, obtendremos lo siguiente (el resaltado en rojo fue agregado por mi):
Explained. PLAN_TABLE_OUTPUT --------------------------------------------------- Plan hash value: 1388734953 --------------------------------- | Id | Operation | Name | --------------------------------- | 0 | SELECT STATEMENT | | | 1 | FAST DUAL | | ---------------------------------
Conclusión
Si desean conocer más sobre Oracle 23c, es recomendable que vean estos artículos en este blog como punto de partida:
- Oracle Database 23c Free - Developer Edition.
- Instalando Oracle Database 23c (Free Developer Edition) en Oracle Cloud.
Adicionalmente, pueden consultar todos los artículos relacionados a Oracle Database 23c agrupados en en el tag Database 23c.
No hay comentarios.:
Publicar un comentario