Ejecuta una setencia SQL dinamica, es decir definida dentro de una cadena.
Tambien funciona con un bloque PL/SQL.
EXECUTE IMMEDIATE cadena_sql [INTO {variable1,... | INTO registro}] [USING [IN|OUT|IN OUT] bind_arg,...] [RETURN[ING] INTO bind_arg,...];
cadena_sql: Es la variable con la cadena SQL o con el bloque PL/SQL.
Si "cadena_sql" termina en ';', se tratará como un bloque PL/SQL, en otro caso se trataran como sentencias DML (SELECT,INSERT,...) o DDL (CREATE TABLE,..).
variable1, variable2: Una variable por cada columna de respuesta de la cadena_sql.
registro: Variable de tipo registro que recibe la fila completa (TYPE o %ROWTYPE)
USING: Sirve para pasar parámetros a las sentencias. bind_arg: son variables o expresiones que contienen los parámetros de la sentencia.
Cuando se ejecuta la sentencia, se reemplaza cada variable en la sentencia sql (un identificador con dos puntos delante, como :inicio) por su correspondiente valor según su posición.
Se pueden pasar numeros, fechas y cadenas.
No se pueden pasar booleanos o literales de NULL pero si se puede pasar una variable a nulo con el tipo de dato adecuado.
No se puede usar EXECUTE IMMEDIATE para consultas de multiples filas. Solo podemos recoger una.
Explicación de la sintaxis utilizada para los comandos: Las palabras en mayusculas son comandos de oracle. Las palabras en minusculas son opiones modificables Las partes enmarcadas con [] son opcionales Las palabras en negrita son las opciones por defecto Las partes enmarcadas con {} son alternativas (una u otra). El simbolo | indica OR