|
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 -
| |