oci_parse

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

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

Описание

resource oci_parse ( resource $connection , string $sql_text )

Подготавливает sql_text к выполнению, используя соединение connection и возвращает идентификатор выражения, который может быть далее использован функциямиoci_bind_by_name(),oci_execute() и другими.

Идентификаторы выражений могут быть освобождены функцией oci_free_statement() или установкой переменной в NULL.

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

connection

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

sql_text

Запрос 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($stidOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>" . ($item !== null htmlentities($itemENT_QUOTES) : "&nbsp;") . "</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'$p240);

oci_execute($stid);

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

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

?>

Примечания

Замечание:

Эта функция не проверяет синтаксис запроса sql_text. Единственный способ проверить правильность SQL или PL/SQL-запроса sql_text - это выполнить его.

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

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