El procedimiento almacenado contiene SQL dinámico, ¿cuál es la diferencia entre este y el SQL estático?
Las sentencias SQL se pueden dividir en dos tipos desde la perspectiva de compilación y operación, SQL estático y SQL dinámico. Estos dos tipos de SQL tienen sus propias características en términos de uso, mecanismo de operación y rendimiento:
p>SQL estático: las declaraciones de SQL estático se utilizan generalmente en aplicaciones de SQL incorporado. Antes de ejecutar el programa, se debe determinar la declaración de SQL. Por ejemplo, los nombres de las columnas y las tablas involucradas en la declaración de SQL deben existir. La compilación de sentencias SQL estáticas se realiza antes de ejecutar la aplicación y los resultados de la compilación se almacenan dentro de la base de datos. Luego, cuando se ejecuta el programa, la base de datos ejecutará directamente la declaración SQL compilada, lo que reducirá la sobrecarga del tiempo de ejecución.
SQL dinámico: las declaraciones SQL dinámicas se compilan y ejecutan cuando la aplicación se está ejecutando. Por ejemplo, cuando se utiliza la herramienta interactiva CLP de DB2 para acceder a la base de datos, la declaración SQL ingresada por el usuario es incierta, por lo que las declaraciones SQL. sólo se puede compilar dinámicamente. SQL dinámico tiene muchas aplicaciones y las aplicaciones CLI y JDBC comunes utilizan SQL dinámico.
SQL estático: El tipo de sentencia debe determinarse durante la programación. Por ejemplo
seleccione * del empleado donde empno='abc'select * del empleado donde empno='12' debe ser seguro, lo único que puede cambiar es el valor de abc.
SQL dinámico: el tipo de declaración se puede especificar durante el tiempo de ejecución. Por ejemplo, clp es el programa SQL dinámico más típico. Puede ingresar cualquier comando.
La ruta de acceso de SQL estático se determina antes de ejecutarse, mientras que la ruta de acceso de SQL dinámico se genera dinámicamente en tiempo de ejecución. Por lo tanto, el plan de acceso generado es relativamente mejor, pero considerando el costo de generar rutas de acceso, es posible que el tiempo de ejecución de la aplicación sea relativamente más largo que el SQL estático.