oci_parse

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_parseПодготавливает запрос к выполнению

Описание

oci_parse(resource $connection, string $sql): resource|false

Функция подготавливает sql-запрос к выполнению через соединение connection и возвращает идентификатор запроса, который передают в oci_bind_by_name(), oci_execute() и другие функции.

Идентификаторы запросов освобождают функцией oci_free_statement() или установкой для переменной значения null.

Список параметров

connection

Идентификатор соединения Oracle, который получили из функций oci_connect(), oci_pconnect() или oci_new_connect().

sql

SQL- или PL/SQL-запрос.

SQL-запросы не должны заканчиваться точкой с запятой (";"). PL/SQL-запросы должны заканчиваться точкой с запятой (";").

Возвращаемые значения

Функция возвращает дескриптор запроса в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #1 Пример использования функции oci_parse() с SQL-запросами

<?php

$conn
= oci_connect('hr', 'welcome', 'localhost/XE');

// Парсим запрос. Обратите внимание на отсутствие точки запятой в конце SQL-запроса
$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo
"<table border='1'>\n";
while (
$row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
echo
"<tr>\n";
foreach (
$row as $item) {
echo
" <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "") . "</td>\n";
}
echo
"</tr>\n";
}
echo
"</table>\n";

?>

Пример #2 Пример использования функции oci_parse() с PL/SQL-запросами

<?php

/*
Перед запуском PHP-скрипта, создайте хранимую процедуру
в SQL*Plus или SQL Developer:

CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
BEGIN
p2 := p1 * 2;
END;

*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

if (!
$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$p1 = 8;

// При парсинге PL/SQL-запросов требуется наличие точки с запятой в конце строки
$stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
oci_bind_by_name($stid, ':p1', $p1);
oci_bind_by_name($stid, ':p2', $p2, 40);

oci_execute($stid);

print
"$p2\n"; // prints 16

oci_free_statement($stid);
oci_close($conn);


?>

Примечания

Замечание:

Функция не проверяет синтаксис запроса sql. Единственный способ проверить правильность SQL- или PL/SQL-запроса sql — выполнить запрос.

Смотрите также

  • oci_execute() - Выполняет подготовленное выражение
  • oci_free_statement() - Освобождает ресурсы, занимаемые курсором или SQL-выражением