|
LXX. Функции Oracle 8
Эти функции дают возможность доступа к БД Oracle8 и Oracle7.
Используется интерфейс Oracle8 Call-Interface (OCI8). Для использования
этого расширения вам понадобятся клиентские библиотеки Oracle8.
Это расширение более гибко, чем стандартное расширение Oracle. Оно
поддерживает связку глобальных и локальных переменных PHP с заглушками Oracle,
имеет полную поддержку LOB, FILE и ROWID и позволяет использовать
предоставленные пользователем определённые переменные.
Прежде чем использовать это расширение, убедитесь, что вы соответствующим
образом настроили ваши переменные окружения oracle для пользователя Oracle, а также для пользователя вашего web-демона.
Вот переменные, которые вам может понадобиться установить:
-
ORACLE_HOME
-
ORACLE_SID
-
LD_PRELOAD
-
LD_LIBRARY_PATH
-
NLS_LANG
-
ORA_NLS33
После настройки переменных окружения для пользователя вашего web-сервера не
забудьте также добавить пользователя web-сервера (nobody, www) в группу oracle.
Если ваш web-сервер не стартует или заваливается при старте:
убедитесь, что Apache связан с библиотекой pthread:
# ldd /www/apache/bin/httpd
libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
libm.so.6 => /lib/libm.so.6 (0x4002f000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
libc.so.6 => /lib/libc.so.6 (0x4007e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
Если libpthread нет в списке, нужно переустановить Apache:
# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install
|
Пример 1. Подсказки по OCI
<?php
// от sergo@bacup.ru
// Используйте опцию: OCI_DEFAULT для выполнения команды задержки выполнения
OCIExecute($stmt, OCI_DEFAULT);
// для запроса использования данных (после извлечения):
$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();
// Для использования операторов INSERT или UPDATE:
$sql = "insert into table (field1, field2) values (field1 = 'value',
field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);
?>
|
|
Вы легко можете получить доступ к хранимым процедурам тем же способом, что
и из командной строки.
Пример 2. Использование хранимых процедур
<?php
// от webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
'$lastname', '$company', '$address1', '$address2', '$city', '$state',
'$postalcode', '$country', :error_code );end;" );
// Это вызывает хранимую процедуру sp_newaddress с :address_id в
// in/out-переменной и :error_code в out-переменной.
// Затем вы выполняете связывание:
OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
OCIExecute ( $sth );
?>
|
|
-
Содержание
-
OCIBindByName - связывает PHP-переменную с заглушкой Oracle
-
OCICancel - отменяет чтение из курсора
-
OCICollAppend -
-
OCICollAssign -
-
OCICollAssignElem -
-
OCICollGetElem -
-
OCICollMax -
-
OCICollSize -
-
OCICollTrim -
-
OCIColumnIsNULL - тестирует, является ли результирующий столбец
NULL
-
OCIColumnName - возвращает имя столбца
-
OCIColumnPrecision -
-
OCIColumnScale -
-
OCIColumnSize - возвращает размер результирующего столбца
-
OCIColumnType - возвращает тип данных столбца
-
OCIColumnTypeRaw -
-
OCICommit - подтверждает внешние транзакции
-
OCIDefineByName - использует PHP-переменную для шага define в операторе SELECT
-
OCIError - возвращает последнюю ошибку из stmt|conn|global
-
OCIExecute - выполняет оператор
-
OCIFetch - извлекает следующий ряд в result-буфер
-
OCIFetchInto - извлекает следующий ряд в result-массив
-
OCIFetchStatement - извлекает все ряды результирующих данных в массив
-
OCIFreeCollection -
-
OCIFreeCursor - освобождает все ресурсы, ассоциированные с курсором
-
OCIFreeDesc - удаляет дескриптор большого объекта/large object
-
OCIFreeStatement - освобождает все ресурсы, ассоциированные с оператором
-
OCIInternalDebug - включает или отключает вывод внутренней отладки
-
OCILoadLob -
-
OCILogOff - отсоединяет от Oracle
-
OCILogon - устанавливает соединение с Oracle
-
OCINewCollection -
-
OCINewCursor - возвращает новый курсор (Statement-Handle/оператор-дескриптор)
-
OCINewDescriptor - инициализирует новый пустой дескриптор LOB или FILE
-
OCINLogon - устанавливает новое соединение с Oracle
-
OCINumCols - возвращает количество результирующих столбцов в операторе
-
OCIParse - разбирает запрос/query и возвращает оператор
-
OCIPLogon - соединяется с БД Oracle с использованием постоянного соединения
-
OCIResult - возвращает значение столбца для извлечённого ряда
-
OCIRollback - откатывает неразрешённые транзакции
-
OCIRowCount - получает количество задействованных рядов
-
OCISaveLob -
-
OCISaveLobFile -
-
OCIServerVersion - возвращает строку, содержащую информацию о версии сервера
-
OCISetPrefetch - устанавливает количество предварительно извлечённых рядов
-
OCIStatementType - возвращает тип OCI-оператора
-
OCIWriteLobToFile -
|
|