oci_execute
En esta página
oci_execute
Ejecuta un comando SQL de Oracle
Descripción#
oci_execute(resource $statement, [int $mode]): bool
```php
Ejecuta una consulta `statement` previamente devuelta por la función `oci_parse`.
Tras la ejecución, las consultas como `INSERT` tendrán por omisión los datos validados (cometidos) en la base de datos. Para consultas como `SELECT`, la ejecución realiza la lógica de la consulta. Los resultados de la consulta pueden ser recuperados por PHP con funciones como `oci_fetch_array`.
Cada consulta analizada puede ser ejecutada varias veces, por lo que no es necesario analizarlas de nuevo. Esto es práctico para consultas de tipo `INSERT` cuando los datos están vinculados mediante la función `oci_bind_by_name`.
## Parámetros
`statement`
Un identificador de consulta OCI válido.
`mode`
Un segundo argumento opcional puede tomar una de las constantes siguientes:
| Constante | Descripción |
|----|----|
| `OCI_COMMIT_ON_SUCCESS` | Validación automática en la conexión cuando la consulta ha sido ejecutada con éxito. Este es el comportamiento por omisión. |
| `OCI_DESCRIBE_ONLY` | Hace disponibles los metadatos de la consulta a funciones como `oci_field_name` pero no crea un conjunto de resultados. Cualquier llamada a funciones de recuperación como `oci_fetch_array` fallará. |
| `OCI_NO_AUTO_COMMIT` | No valida automáticamente las modificaciones. |
Modos de ejecución
El uso del modo `OCI_NO_AUTO_COMMIT` inicia o continúa una transacción. Las transacciones son automáticamente anuladas cuando la conexión se cierra o cuando el script termina. Llame explícitamente a la función `oci_commit` para validar la transacción o a la función `oci_rollback` para anularla.
Al insertar o actualizar datos, el uso de transacciones es altamente recomendado para garantizar la consistencia relacional de los datos, así como por un significativo aumento de rendimiento.
Si el modo `OCI_NO_AUTO_COMMIT` es utilizado para todas las operaciones incluyendo consultas, y las funciones `oci_commit` y `oci_rollback` nunca son llamadas, OCI8 realizará una anulación al final del script incluso si los datos han cambiado. Para evitar este comportamiento, la mayoría de los scripts no utiliza el modo `OCI_NO_AUTO_COMMIT` para consultas o procedimientos almacenados PL/SQL. Asegúrese de la consistencia transaccional apropiada de sus aplicaciones al utilizar la función `oci_execute` con diferentes modos en el mismo script.
## Valores devueltos
Esta función retorna `true` en caso de éxito o `false` si ocurre un error.
## Ejemplos
Ejemplo con `oci_execute` para consultas
Ejemplo con `oci_execute` sin especificar modo
Ejemplo con `oci_execute` y `OCI_NO_AUTO_COMMIT`
Ejemplo con `oci_execute` y diferentes modos en el mismo script
Ejemplo con `oci_execute` y `OCI_DESCRIBE_ONLY`
```php
Notas#
[!NOTE] Las transacciones son automáticamente anuladas cuando las conexiones se cierran, o cuando el script termina, según lo que ocurra primero. Llame explícitamente a la función
oci_commitpara validar una transacción.Cualquier llamada a la función
oci_executeque utilice el modoOCI_COMMIT_ON_SUCCESSexplícita o implícitamente validará todas las transacciones en curso.Todas las consultas Oracle DDL como
CREATEoDROPvalidarán todas las transacciones en curso.[!NOTE] Debido a que la función
oci_executegeneralmente envía la consulta a la base de datos, la funciónoci_executepuede identificar errores de sintaxis de la consulta que la funciónoci_parsepudo no detectar.
Véase también#
oci_parse