El documento describe las cuatro etapas involucradas en la ejecución de una sentencia SQL: parse, bind, execute y fetch. En la etapa de bind, Oracle verifica la sentencia buscando variables de enlace y les asigna valores. Sin embargo, el plan de ejecución ya se resolvió previamente sin conocer los valores reales de las variables.
El documento describe las cuatro etapas involucradas en la ejecución de una sentencia SQL: parse, bind, execute y fetch. En la etapa de bind, Oracle verifica la sentencia buscando variables de enlace y les asigna valores. Sin embargo, el plan de ejecución ya se resolvió previamente sin conocer los valores reales de las variables.
El documento describe las cuatro etapas involucradas en la ejecución de una sentencia SQL: parse, bind, execute y fetch. En la etapa de bind, Oracle verifica la sentencia buscando variables de enlace y les asigna valores. Sin embargo, el plan de ejecución ya se resolvió previamente sin conocer los valores reales de las variables.
Las etapas involucradas en la ejecucin de una sentencia SQL
(PARSE,BIND, EXECUTE y FETCH)
PARSE : Busca la sentencia en la shared pool Chequea que la sintaxis respete la gramtica y especificaciones del lenguaje SQL Chequea la semntica, asegurando que los objetos referenciados sean vlidos y satisfagan las restricciones de seguridad Determina que el proceso que ejecuta la sentencia tenga los privilegios apropiados. BIND: En la fase de binding Oracle verifica la sentencia buscando referencias a variables de binding (bind variables). Luego Oracle asigna los valores a cada una de las variables. Ntese que el plan de ejecucin se resolvi en la etapa anterior y por lo tanto Oracle no saba los valores de las variables en el momento en que selecciono el plan de ejecucin. Este orden en las etapas de resolucin de una sentencia hace que sea imposible para el optimizador estimar la selectividad del predicado. EXECUTE: En la etapa de ejecucin Oracle aplica el plan de ejecucin determinado en la etapa de parseo y ejecuta las lecturas fsicas, lgicas y ordenamientos necesarios. Es interesante destacar una sutil diferencia entre ordenamientos para sentencias de modificacin de datos (insert, update, delete) y sentencias de consulta. FECH: En la etapa de fetch, Oracle recupera las filas de una sentencia SELECT. Normalmente cada fetch recupera mltiples filas utilizando un arreglo de fetch o array fetch. Cuando el binding se hace por valor se debe proveer el valor de todas las variables que estn en la sentencia SQL antes de cada ejecucin. Cuando el binding es por referencia, se utilizan las direcciones de memoria de las variables con los valores reales. ENLACES
Son variables de SQL*Plus. Las pueden referenciar bloques de PL/SQL mediante el uso del ampersand (&). Ejemplo:
--Ahora realizamos el ejemplo usando variables bind
---------------------------------------------------------------alter system flush shared_pool; Sistema modificado. alter system flush buffer_cache; Sistema modificado. declare ln_cantidad number; begin for n_ind in 1..10000 loop --:ID_PERSONA es la variable bind que se reemplazar --por lo que venga en la seccin de USING execute immediate 'select count(*) from cl_personas where id_persona= :ID_PERSONA'into ln_cantidad using n_ind ; end loop; end; /
Procedimiento PL/SQL terminado correctamente.
Transcurrido: 00:00:01.03 --Revisamos en el SQL AREA la cantidad de sentencias --que se generaron select count(*)cantidad from v$sql where sql_text like 'select count(*) from cl_personas where id_persona=%'; CANTIDAD ---------1