sql >> Base de Datos >  >> RDS >> Oracle

Introducción a SQL dinámico nativo en Oracle Database

SQL dinámico nativo

Antes de comenzar a aprender SQL dinámico nativo, es importante contar con una breve preparación. Oracle entregó un regalo a mediados de verano en mayo de 1994 a todos los desarrolladores al presentar el concepto Dynamic SQL en su base de datos versión 7.1 (también conocida como Oracle 7.1). Con esto, permitió a los desarrolladores escribir el SQL dinámico a través del paquete "DBMS_SQL".

Pero gradualmente, la biblioteca DBMS_SQL comenzó a perder su encanto. Debido a su sintaxis "No tan fácil", el "Rendimiento lento" y los "Tipos definidos por el usuario no admitidos". Todas estas deficiencias plantearon la necesidad de algo más. Lo que podría ayudar a los desarrolladores a escribir un código bien optimizado sin poner demasiada tensión en sus mentes.

Oracle se tomó su tiempo, casi cinco años. Finalmente, lanzó una versión mejorada de Dynamic SQL con el lanzamiento de Oracle Database 8i o, para ser más precisos, Oracle Database versión 8.1.5 en febrero de 1999. Debido a su naturaleza estable, esta versión mejorada de Dynamic SQL se convirtió en la parte nativa de PL/ lenguaje SQL y obtuvo su nombre "SQL dinámico nativo" a través del cual se conoce hoy en día. Esa es una breve introducción de la génesis del SQL dinámico nativo en Oracle Database.

Para comprender el SQL dinámico nativo, primero debemos comprender qué es el SQL estático en Oracle Database.

¿Qué es SQL estático?

Como sugiere el nombre, cualquier instrucción SQL que no cambie durante el tiempo de ejecución se denomina instrucción SQL estática.

La ventaja de las declaraciones de SQL estático es que ya sabemos si todos los objetos dependientes sobre los que estamos escribiendo la declaración están presentes o no. Otra ventaja de las declaraciones de SQL estático es que las codificamos en nuestra aplicación. Así podemos ajustarlos para un rendimiento óptimo.

Ahora que hemos aprendido qué es el SQL estático, veamos qué es el SQL dinámico.

¿Qué es SQL dinámico nativo?

Nuevamente, como sugiere el nombre, cualquier instrucción SQL que se construye en el tiempo de ejecución se llama SQL dinámico . Estas declaraciones se construyen sobre la marcha. Por lo tanto, no se pueden codificar en la aplicación. Esto a su vez aumenta su flexibilidad.

Por un lado, SQL estático le permite ejecutar solo declaraciones DML dentro de su bloque PL/SQL. Por otro lado, el SQL dinámico le permite ejecutar declaraciones DDL y eso también dentro de su bloque PL/SQL. Por lo tanto, al usar SQL dinámico, puede crear una tabla o eliminar un índice o truncar su tabla dentro de su bloque PL/SQL. Esta es una ventaja de Native Dynamic SQL sobre SQL estático.

¿Qué es Native Dynamic PL/SQL?

Similar al SQL dinámico, el proceso de construcción de código PL/SQL en tiempo de ejecución se llama PL/SQL dinámico.

Ahora echemos un vistazo a los beneficios de Native Dynamic SQL sobre el paquete DBMS_SQL en Oracle Database.

Beneficios de SQL dinámico nativo

  • Códigos fáciles de usar: En comparación con el paquete DBMS_SQL, el SQL dinámico nativo es mucho más fácil de usar. Esto se debe principalmente a que está incorporado en el propio SQL. Es equivalente a usar Static SQL dentro de un código PL/SQL. Además, el código SQL dinámico nativo es más compacto y legible que el paquete DBMS_SQL. Este último requiere una gran cantidad de códigos debido a los estrictos procedimientos secuenciales. Lo hace más complejo.
  • Mejora en el rendimiento del código: Hay un soporte incorporado para SQL dinámico nativo en el intérprete PL/SQL. Por lo tanto, los programas que lo usan son más eficientes que los que usan el paquete DBMS_SQL. Básicamente, el SQL dinámico nativo combina los pasos que implican la preparación, el enlace y la ejecución en una sola operación. Esto reduce la sobrecarga de copia de datos y llamadas de procedimiento, lo que a su vez mejora el rendimiento.
  • Compatibilidad con tipos definidos por el usuario: A diferencia del paquete DBMS_SQL, el SQL dinámico nativo admite todo tipo de tipos definidos por el usuario. Por ejemplo, objetos definidos por el usuario, REF y colecciones.
  • Compatibilidad con la obtención de registros: Las filas que son el resultado de una consulta se pueden recuperar directamente en registros PL/SQL utilizando SQL dinámico nativo. Esto no es posible con el paquete DBMS_SQL.

¿Cuáles son las funcionalidades de Dynamic SQL en Oracle Database?

  1. En primer lugar, Dynamic DDL y DML con el uso de cualquier variable de vinculación.
  2. En segundo lugar, Dynamic DQL y
  3. En tercer lugar, DML dinámico usando una lista conocida de variables de vinculación

Estas son las tres funcionalidades que Dynamic SQL agrega a su programación PL/SQL.

Entonces, ¿cómo usamos SQL dinámico en Oracle Database?

Los dos métodos más comunes para usar SQL dinámico y PL/SQL en Oracle Database son:

  1. Ejecutar declaración inmediata y
  2. Abrir para, buscar y cerrar bloque.

La instrucción Execute Immediate se usa cuando la consulta devuelve datos de una sola fila. En caso de que la consulta devuelva datos de varias filas, puede tomar la ayuda de Open-For, Fetch y close block. Aprenderemos sobre Ejecutar inmediatamente y Abrir para, buscar y cerrar bloque en detalle en los próximos tutoriales.

¿Existen otras formas de usar Dynamic SQL en Oracle Database?

Además de los métodos más utilizados mencionados anteriormente, las otras formas de utilizar SQL dinámico o PL/SQL son

  • Con recuperación masiva
  • En segundo lugar con ejecución masiva inmediata
  • Junto con Bulk FORALL y
  • Por último, con la declaración Bulk Collect Into

Hemos aprendido todos los comandos y declaraciones anteriores en la serie anterior sobre el procesamiento masivo de datos.

Si te gusta aprender a través de un videotutorial, échale un vistazo.

Esa es una introducción detallada a Native Dynamic SQL en Oracle Database. Espero que hayas disfrutado leyendo. Asegúrese de Compartir el enlace de este blog con tus amigos en tus redes sociales. También asegúrese de suscribirse al canal de YouTube para seguir esta serie y aprender algo nuevo e interesante.

¡Gracias y que tengas un gran día!