oci_execute
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_execute — Виконує підготовлений вираз
Опис
oci_execute(resource $statement, int $mode = OCI_COMMIT_ON_SUCCESS): bool
Виконує підготовлений вираз statement
, створене за допомогою функції oci_parse()
Відразу після виконання такого вираження INSERT
, за промовчанням всі дані одразу будуть збережені в базі даних. Для подібних виразів SELECT
, виконується лише логіка запиту. Результат же запиту можна отримати пізніше в PHP за допомогою подібних функцій oci_fetch_array()
Кожне підготовлене вираз може бути виконано кілька разів для економії витратах від повторної підготовки запиту. Це найчастіше застосовується для виразів INSERT
, коли до них прив'язані дані за допомогою oci_bind_by_name()
Список параметрів
statement
Правильне підготовлене вираження OCI.
mode
Необов'язковий другий параметр з одним із наступних значень:
Режим виконання
Константа | Опис |
---|---|
OCI_COMMIT_ON_SUCCESS | Автоматично зберігати всі незбережені зміни, здійснені за поточну сесію у разі успішного виконання виразу. Цей режим встановлено за замовчуванням. |
OCI_DESCRIBE_ONLY | Робить доступними метадані запити для подібних функцій oci_field_name(), але створює результат виконання висловлювання. Будь-яке подальше отримання даних, наприклад, за допомогою oci_fetch_array() не буде зроблено. |
OCI_NO_AUTO_COMMIT | Не зберігати автоматично зміни. |
Использование режима**OCI_NO_AUTO_COMMIT
** відкриває чи продовжує транзакцію. Ця транзакція автоматично відкочується під час закриття з'єднання або завершення скрипту. Використовуйте oci_commit() для завершення транзакції та oci_rollback() для її скасування.
При вставці та оновленні даних рекомендується використання транзакцій для реляційної цілісності даних та для покращення продуктивності.
Якщо для якогось виразу використовується режим OCI_NO_AUTO_COMMIT
, і згодом не використовуються oci_commit() або oci_rollback(), то OCI8 буде виконувати відкат при завершенні скрипта навіть якщо дані не були змінені. Для уникнення непотрібних відкатів більшість скриптів не використовують режим OCI_NO_AUTO_COMMIT
для запитів або PL/SQL. Будьте уважні, щоб забезпечити належну узгодженість транзакцій під час використання oci_execute() із різними режимами в одному скрипті.
Значення, що повертаються
Повертає true
у разі успішного виконання або **false
**в случае возникновения ошибки.
Приклади
Приклад #1oci_execute()** під час виконання запитів**
Loading...
Приклад #2oci_execute()** без вказівки певного режиму**
Loading...
Приклад #3oci_execute()сOCI_NO_AUTO_COMMIT
****
Loading...
Приклад #4oci_execute()** з різними режимами**
Loading...
Приклад #5oci_execute()сOCI_DESCRIBE_ONLY
****
Loading...
Примітки
Зауваження :
Транзакції автоматично відкочуються під час закриття з'єднання або завершення виконання скрипту. Примусово викликайте oci_commit() для завершення транзакції.
Будь-який виклик oci_execute(), який примусово використовує
OCI_COMMIT_ON_SUCCESS
або за умовчанням завершуватиме будь-яку попередню незакриту транзакцію.Будь-який вираз Oracle DDL подібний
CREATE
илиDROP
буде автоматично завершувати будь-яку. незакриту транзакцію.
Зауваження :
Оскільки функція oci_execute() зазвичай відправляє вирази до бази даних, то oci_execute() може знайти деякі незначні синтаксичні помилки, коли локальна oci_parse()их не находит.
Дивіться також
- oci_parse() - готує запит до виконання