&reftitle.examples; Эти примеры выполняются под пользователем HR, который является образцом из "Human Resources" схемы, поставляемой вместе с базой данных Oracle. Возможно потребуется разблокировать этот аккаунт и переустановить для него пароль, чтобы использовать его. Примеры подключаются к базе данных XE на вашем компьютере. Вы можете заменить строки с подключением для использования своих баз данных. Простой запрос Данный пример показывает запрос и результат. Выражения в OCI8 используют последовательность из шагов подготовка-выполнение-выборка. \n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { print "\n"; foreach ($row as $item) { print " " . ($item !== null ? htmlentities($item, ENT_QUOTES) : "") . "\n"; } print "\n"; } print "\n"; oci_free_statement($stid); oci_close($conn); ?> ]]> Вставка с использованием привязанных переменных Привязывание переменных повышают производительность за счёт повторного использования контекста запроса и кеширования. Также они повышают безопасность блокируя некоторые типы SQL-инъекций. ]]> Привязка в WHERE выражении запроса Пример единичной привязки скаляра. \n"; } // Выведет // Austin // Ernst // Hunold // Lorentz // Pataballa oci_free_statement($stid); oci_close($conn); ?> ]]> Вставка данных в поле типа CLOB Для больших данных используйте длинные двоичные объекты (BLOB) или длинные символьные объекты (CLOB). Данный пример использует тип данных CLOB. save("A very long string"); oci_commit($conn); // Получение CLOB данных $query = 'SELECT myclob FROM mytable WHERE mykey = :mykey'; $stid = oci_parse ($conn, $query); oci_bind_by_name($stid, ":mykey", $mykey, 5); oci_execute($stid); print ''; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) { print ''; // В цикле, очищение больших переменных перед повторным получением данных, уменьшает пиковое потребление памяти PHP unset($row); } print '
'.$row['MYCLOB'].'
'; ?> ]]>
Использование PL/SQL хранимых процедур Вы должны привязывать переменную для каждого возвращаемого значения и опционально для каждого аргумента функции. ]]> Использование PL/SQL хранимых процедур При использовании хранимых процедур желательно привязывать переменные к каждому аргументу. ]]> Вызов PL/SQL процедур, возвращающих <literal>REF CURSOR</literal> Каждое возвращаемое значение из запроса является REF CURSOR. \n"; while (($row = oci_fetch_array($stid, OCI_ASSOC))) { echo "\n"; $rc = $row['MFRC']; oci_execute($rc); // возвращает значение поля из запроса в виде указателя while (($rc_row = oci_fetch_array($rc, OCI_ASSOC))) { echo " " . $rc_row['CITY'] . "\n"; } oci_free_statement($rc); echo "\n"; } echo "\n"; // Выведет: // Beijing // Bern // Bombay // Geneva oci_free_statement($stid); oci_close($conn); ?> ]]>