Sybase

Sybase connect

Подключение к серверу Sybase

int sybase_connect (string server-name, string username, string ' password [, string charset])
Возвращает дескриптор подключения к серверу Sybase или FALSE -при ошибке. Аргумент servername должен быть действительным именем, определенном в файле interfaces.
Если функция повторно вызывается с теми же аргументами, новое подключение не создастся, а возвращается идентификатор имеющегося.
Подключение к серверу закрывается при завершении сценария или ранее, если явно вызывается функция sybase_close().
См. также: sybase_pconnect(), sybase_close().
sybase_close
Закрытие подключения к Sybase
bool sybase_close (int link_identifier)
Возвращает TRUE или FALSE — при ошибке.
Идентификатор закрываемого подключения указывается в аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.
Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария. Заметьте: устойчивые подключения, созданные функцией sybase_pconnect(), не закрываются.
См. также: sybase_connect(), sybase_pconnect().
sybase_pconnect
Создание устойчивого подключения к серверу Sybase
int sybase_pconnect (string servername, string username, string password [, string charset])
Возвращает дескриптор устойчивого подключения или FALSE — при ошибке. sybase_pconnect() действует подобно sybase_connect() с двумя отличиями.
Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя сервера, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.
При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция sybase_ close() не может закрыть подключения, созданные с помощью sybase_ pconnect().)
sybase_select_db
Выбор БД Sybase
bool sybase_se!ect_db (string databasejiame, int link_identifier) Возвращает TRUE или FALSE — при ошибке.
Устанавливает БД с именем database_name в качестве активной для текущего подключения или указанного в link_identifier. Если подключений не имеется, то косвенно вызывается функция sybase_connect() с параметрами по умолчанию.
Последующие запросы, выполняемые функцией, будут адресованы данной БД.
См. также: sybase_connect(), sybase_pconnect() и sybase_query()
sybase_query
Выполнение запроса к БД Sybase
int sybase_query (string query, int link_identifier)
Посылает запрос текущей БД, активной для текущего (последнего открытого) подключения или указанного в link_identifier. Если подключений не имеется, то косвенно вызывается функция sybase_ connect() с параметрами по умолчанию.
Возвращает дескриптор набора возвращенных записей или FALSE -при ошибке.
См. также: sybase_select_db() и sybase_connect().
sybase_affected_rows
Получение числа измененных последним запросом записей int sybase_affected_rows ([int link_identifier]}
Возвращается число записей, измененных в результате выполнения запросом DELETE, INSERT, REPLACE или UPDATE.
Если последним запросом была команда DELETE без ограничения WHERE, то из таблицы будут удалены все записи, но эта функция возвратит 0.
Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию sybase_num_rows().
Функция доступна только при использовании библиотеки интерфейса СТ Sybase, но не D В Sybase.
Sybase_num_rows
Получение числа записей, возвращенных запросом
int sybase_num_rows (int result)
См. также: sybase_query() и sybase_fetch_row().
sybase_num_fields
Получение числа полей в наборе записей
int sybase_num_fields (int result)
См. также: sybase_query(), sybase_fetch_field(), sybase_num_rows().
sybase_data_seek
Перемещение внутреннего указателя записи
bool sybase_data_seek (int result_identifier. int row_number)
При каждом вызове функции sybase_fetch row() (или подобной) внутренний курсор записи смещается на следующую запись. Данная функция позволяет свободно перемещать курсор в наборе записей res ul t_ identifier так, чтобы он указывал на запись с номером row_number (нумерация начинается с 0) при следующем вызове sybase_fetch_rov*().
Она возвращает TRUE или FALSE — при ошибке.
Sybase_result
Получение определенного элемента набора записей
string sybase_result (int result, int row, mixed field)
Возвращает содержимое ячейки из набора записей resul t. В аргументе row указывается номер записи (нумерация начинается с 0), в аргументе field можно указать индекс поля (число), имя поля, полное имя поля (вида: имя_таблицы.имя_поля) или псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...).
При работе с большими наборами записей быстрее выполняются функции типа _fetch_ (см. ниже). Также заметьте, что численные индексы обрабатываются быстрее строковых.
Не следует вызывать функцию mysql_result() в сочетании с другими функциями обработки набора записей.
Рекомендуется использовать альтернативные функции: sybase_fetch_ row(), sybase_fetch_array() и sybase_fetch_object().
sybase_fetch_row
Занесение записи в нумерованный массив
array sybase_fetch_row (int result)
Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом (последующий вызов функции возвращает следующую запись), или FALSE, если записей более не имеется. Каждое поле записи сохраняется в нумерованном элементе массива (нумерация начинается с 0).
См. также: sybase_fetch_array(), sybase_fetch_object(), sybase_data_seek(), sybase_result().
sybase_fetch_array
Занесение записи в массив
array sybase_fetch_array (int result)
Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется (при этом курсор записи перемещается на следующую).
Данная функция является расширением функции sybase_fetch_row(), и она возвращает объединенный нумерование-ассоциативный массив. Доступ к элементам массива может осуществляться как через имена полей, так и по их номеру.
Заметьте, что функция выполняется незначительно медленнее, чем sybase_fetch_row(), но предоставляет дополнительную функциональность.
См. также sybase_fetch_row().
sybase_fetch_object
Получение записи в свойствах объекта
int sybase_fetch_object (int result)
Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.
По скорости выполнения (и функциональности) функция идентична sybase_fetch_array() и почти идентична sybase_fetch_row().
См. также: sybase_fetch_array() и sybase_fetch_row().
sybase_free_result
Уничтожение набора записей
bool sybase_free_result (int result)
Функция освобождает память, занимаемую набором записей result, возвращенным запросом. Ее следует использовать только в том случае, если требуется экономить память, так как память автоматически освобождается при завершении сценария.
sybase_fetch_field
Получение информации о поле записи в свойствах объекта
object sybase_fetch_field (int result [, int field_offset])
Если номер поля field_offset не указан, при каждом вызове функции возвращаются свойства следующего поля из набора записей resul t.
Возвращаемый объект имеет следующие свойства (и содержит информацию):

  • name — имя поля. Если поле — результат выполнения функции, имя возвращается в виде computed#N, где #М — порядковый номер;
  • column_source — имя таблицы, которой принадлежит поле;
  • numeric — 1, если поле числовое;
  • type — тип поля.

См. также sybase_field_seek().
sybase_field_seek
Перемещение к указанному полю
int sybase_field_seek (int result, int field_offset)
Перемещается к указанному числом field_offset нолю. И если при следующем вызове sybase_fetch_field () не указывается номер поля, будет возвращено это поле.
См. также sybase_fetch_field().
sybase_get_last_message
Получение последнего сообщения сервера string sybase_getjast_message (void)
sybase_min_client_severity
Установка минимального уровня требовательности клиента
void sybasejnin_client_severity (int severity)
Функция доступна только при использовании библиотеки интерфейса СТ Sybase, но не DB Sybase.
См. также sybase_min_server_severity().
sybase_min_server_severity
Установка минимального уровня требовательности сервера
void sybase_min_server_severity (int severity)
Функция доступна только при использовании библиотеки интерфейса СТ Sybase, но не DB Sybase.
См. также sybaseji)in_client_severity().
sybase_min_message_severity
Установка минимального уровня возвращаемых сообщений
void sybase_min_message_severity (int severity)
См. также sybase_min_error_seventy().
sybase_min_error_severity
Установка минимального уровня сообщаемых ошибок
void sybase_min_error_severity (int severity)
См. также sybase_rain_message_severity().
Oracle
Примерный образец работы с БД:
<?php
putenv( "ORACLE_SIDORACLE");
puterw("ORACLE_HOME=
/opt/oracle/oracle/8.0.3");
$conn = ora_login("user_nam". "passwd"):
// Sconn - ora_login
("user_nam@server", "passwd");
// или так $curs = ora_open($conn).
ora_comrntoff($conn):
$query = "select * from t";
ora_parse($curs. $query);
ora_exec($curs):
// ora_do(Sconn. $query);
// краткая версия запроса
$ncols = orajiumcols(Scurs);
// число полей Snrows =
ora_numrows(Scurs);
// число записей
$hdr=TRUE:
while (ora_fetch(Scurs))
{ // следующая запись
if(Shdr) // выводить заголовок
только в начале
for (Si=0; $i<$ncols: Si++)
pnntf("[Si] Its Us). \n". ora_columnname
($curs. $1).
ora_columntype(Scurs. $1))
: $hdr=FALSE. for ($1=0; Si
<Sncols; $l++)
print ora_getcolumn(Scurs.$i).
"; "; // поле print "\n"; } ?>
Ora_Logon
Подключение к серверу Oracle
int orajogon (string user, string password)
Возвращает дескриптор подключения к БД или FALSE — при ошибке.
Подключения также могут создаваться с использованием синтаксиса SQL*Net с указанием TNS имени пользователя user в виде:
Sconn = Ora_Logon
( "system/user@host" . "pass" );
Если имеются не-ASCII символы, то должна быть установлена (до запуска сервера) переменная окружения (Oracle) NLS_LANG.
Ora_Logoff
Закрытие подключения
int orajogoff (int connection)
Возвращает TRUE или FALSE — при ошибке.
См. также ora_logon().
Ora_pLogon
Создание устойчивого подключения к серверу Oracle
int ora_plogon (string user, string password)
См. также oraJogon().
Ora_0pen
Открытие курсора
int ora_open (int connection)
Возвращает индекс курсора для подключения connection или FALSE -при ошибке.
Ora_Close
Закрытие курсора
int ora_close (int cursor)
Закрывает курсор, открытый ora_open().
Возвращает TRUE или FALSE -при ошибке.
Ora_CommitOn
Разрешение автовыполнения запросов /»
int ora_commiton (int conn) {
Каждый запрос для подключения conn, выполняемый функцией ога_ ехес(), будет автоматически завершаться.
Возвращает TRUE или FALSE — при ошибке.
Ora_CommitOff
Запрет автовыполнения запросов
int ora commitoff (int conn)
Ora _Commit
Завершение текущей транзакции int ora_commit (int conn)
Транзакцией является серия изменений в БД (запросов) после последнего завершения транзакции (если автозавершсние было отключено).
Возвращает TRUE или FALSE — при ошибке.
Ora_Rollback
Отмена транзакции
int ora_rolI back (int connection)
Функция, обратная ora_commit().
Возвращает TRUE или FALSE — при ошибке.
Ora_Parse
Интерпретация SQL-запроса
int ora_parse (int cursor_ind, string sql_statement, int defer)
Подготавливает для исполнения запрос SQL или блок PL/SQL и связывает с курсором.
Возвращает 0 или -1 - при ошибке.
См. также: ога_ехес(), ora_fetch() и ora_do().
Ога_Ехес
Исполнение подготовленного запроса
int ora_exec (int cursor)
Возвращает TRUE или FALSE — при ошибке.
См. также: ora_parse(), ora_fetch() и ora_do().
Ora_Do
Одновременное выполнение команд Parse; Exec, Fetch
int ora_do (int conn, string query)
Функция является комбинацией трех функций: ora_parse(), ora_exec(), ora_fetch().
Возвращает TRUE или FALSE — при ошибке.
См. также: ora_parse(), ora_exec() и ora_fetch().
Ora_Bind
Связывание переменной РНР с SQL-параметром Oracle
int ora_bind (int cursor, string PHP_var_name, string SQL_param_name, int length [, int type])
Возвращает TRUE или FALSE — при ошибке.
SQL параметр должен указываться в виде ":name". Необязательным аргументом type можно указать вид SQL параметра (входящий, выходящий): IN/OUT (0, по умолчанию), in (1) или out (2). В РНР 3.0.1 можно использовать вместо цифр константы: ORA_BIND_INOUT, ORA_ BINDJN и ORA_BIND_OUT.
Функция должна вызываться после ora_parse() и до ога_ехес().
<?php
ora_parse(Scurs. "declare tmp INTEGER; "
"begin tmp :- :in; :out :- tmp; :x := 7.77; end;"):
ora_bind($curs. "result". ":x". $len. 2).
ora_bind($curs. "input", "in". 5. 1);
ora_bind($curs. "output". ";out". 5. 2).
Sinput = 765; ora_exec($curs);
echo "Result; tresult; Out: Soutput: In: $input":
?>
Ora_Error
Получение сообщения об ошибке Oracle
string Ora_Error (int cursor_or_connection)
Сообщение возвращается в виде строчек вида XXX-NNNNN, где XXX означает место возникновения ошибки, a NNNNN — причину.
Ora_ErrorCode
Получение кода ошибки Oracle
int Ora_ErrorCode (int cursor_or_connection)
Возвращает численное значение ошибки, произошедшей при последней операции.
О означает отсутствие ошибки.
Ora_Numcols
Получение числа полей, возвращенных запросом
int orajiumcols (int cursorjind)
См. также: ora_parse(), ora_exec(), ora_fetch() и ora_do().
Ora_Numrows
Получение числа записей, возвращенных запросом
int orajiumrows (int cursor_ind)
Ora_Fetch
Получение записи
int ora_fetch (int cursor)
Возвращает TRUE или FALSE — при ошибке или если записей больше не имеется.
См. также: ora_parse(), ora_exec() и ora_do().
Ora_Fetch_lnto
Получение записи в массиве
int ora_fetch_into (int cursor, array result [, int flags])
<?php array($results);
ora_fetch_into($cursor. &$results):
echo $results[0]. $results[ll: ?>
Заметьте, что массив необходимо передавать по ссылке.
См. также: ora_parse(), ora_exec(), ora_fetch() и ora_do().
Ora_GetColumn
Получение данных поля записи
mixed ora_getcolumn (int cursor, mixed column)
Возвращает значение поля (или результата SQL/PL функции) или FALSE — при ошибке. Заметьте, что возвращаемые данные могут иметь значения: NULL, "", О, "О".
Ora_ColumnName
Получение имени поля
string Ora_ColumnName (int cursor, int column) Возвращает имя в верхнем регистре.
Ora_ColumnSize
Получение размера поля
int Ora_ColumnSize (int cursor, int Column)
Ora_ColumnType
Получение типа поля
string Ora_ColumnType (int cursor, int column)
Возвращаемая строка может иметь следующие значения:

  • «VARCHAR2»;
  • «VARCHAR»;
  • «CHAR»;
  • «NUMBER»;
  • «LONG»;
  • «LONG RAW»;
  • «ROWID»;
  • «DATE»;
  • «CURSOR».

Oracle 8
Эта группа функций позволяет обращаться к серверам БД Oracle 8 и Oracle 7, используя Oracle 8 Call-Interface (OCI8). Для этого требуются клиентские библиотеки Oracle 8.
Это расширение более функционально, нежели стандартное; оно поддерживает связывание переменных РНР с переменными Oracle, имеет полную поддержку типов LOB, FILE, ROWID и позволяет использовать определяемые пользователем переменные.
До использования этого расширения необходимо установить параметры окружения Oracle. Это включает установку следующих системных переменных:

  • ORACLEJOME;
  • ORACLEJID;
  • LD_PRELOAD;
  • LD_LIBRARY_PATH;
  • NLS_LANG;
  • ORAJLS33.

После этого необходимо добавить в группу пользователей oracle пользователя (обычно nobody или www), от имени которого запускается РНР (web-сервер).
OCIServerVersion
Получение строки информации сервера
string OCIServerVersion (int conn)
<?php
$conn = OCILogonC'scott"."tiger");
print "Server Version "
. OCIServerVersionUconn):
OCILogOff($conn): ?>
OCILogon
Подключение к серверу Oracle
int OCILogon (string username, string password [, string db])
Возвращает дескриптор подключения, необходимый для указания для большинства функций OCI. В третьем аргументе можно указать либо константное имя локальной БД, либо ссылку на раздел в файле tnsnames.ora; если этот аргумент не указан, РНР будет использовать переменные окружения ORACLE_SID или TWO_TASK (tnsnames. ога) для определения, к какой БД следует подключиться.
Подключения, созданные этой функцией, становятся разделяемыми на уровне сценария, что означает, что все команды COMMIT и ROLLBACK будут применяться ко всем транзакциям, даже если они принадлежат разным подключениям (см. пример ниже).
См. также: OCIPLogonz() и OCINLogon().
OCINLogon
Создание изолированного подключения к БД Oracle
int OCINLogon (string username, string password [, string db])
Функция сходна с OCILogon(), но отличается тем, что все onepai COMMIT и ROLLBACK применяются только к транзакциям укаг ною подключения.
Пример демонстрирует разделение подключений.
<?php $db = "":
$cl = ocilogonC'scott". "tiger". $db):
/'$c2 = ocilogonC'scott"."tiger".$db);
// для сравнения
$c2 = ocinlogonC'scott". "tiger".$db):
function create_table(Sconn)
{ Sstmt = ociparse($conn.
"create table scott hallo (test
varchar2(64))");
ociexecutetSstmt):
echo Sconn." Таблица создана \n\n". , }
function drop_table($conn)
{ Sstmt = ociparse($conn."drop
table scott hallo"):
ociexecute($stmt).
echo Sconn." dropped table\n\n": ! }
function insert_data(Sconn)
{ Sstmt = ociparse(Sconn."insert
into scott.hallo
valuest'Sconn' [j ' ' | to_char
(sysdate. 'DD-MON-YY HH24:MI:SS'))"):
ocie/ecute(Sstmt.OCI_DEFAULT).
echo Sconn." inserted hallo\n\n": }
function delete_data(Sconn)
{ Sstmt = ociparse
(Sconn."delete from scott.hallo");
ociexecute(Sstmt.OCI_DEFAULT);
echo Sconn." deleted hallo\n\n"; }
function commit(Sconn)
{ ocicommit(Sconn);
echo Sconn." committed\n\n": }
function roll back(Sconn)
{ ociroll back(Sconn):
echo Sconn " rollback\n\n"; }
function select_data($conn)
{ Sstmt = ociparse
($conn."select * from scott.hallo"):
ociexecute($stmt.OCI_DEFAULT).
echo $conn."---selecting\n\n";
while (ocifetch($stmt))
echo Sconn." <".ociresult
(Sstmt."TEST").">\n\n":
echo Sconn "—done\n\n"; }
create_table($cl); insert_data($cl):
selectjJata(tcl): select_data($c2):
roliback(Scl):
select_data($cl). select_data($c2):
insert_data($c2): согап t($c2);
select_data($cl).
delete_data($cl): select_data($cl):
select_data($c2). commit($cl):
select_data(Scl): select_data($c2).
drop_table($cl): ?>
См. также: OCILogon() и OCIPLogon().
OCILogOff
Отключение от Oracle
int OCILogOff (int connection)
OCIPLogon
Создание устойчивого подключения к Oracle
int OCIPLogon (string username, string password [, string db])
Функция сходна с OCILogon(), но отличается тем, что подключение не закрывается после завершения сценария и остается действительным для дальнейшего использования.
См. также: OCILogon() и OCINLogon().
OCIInternalDebug
Разрешение или запрещение внутренней отладки void OCIInternalDebug (int onoff)
По умолчанию отладка запрещена. Указание в аргументе значения О выключает отладку, а 1 — включает.
OCIDefineByName
Назначение PHP-переменной для возвращения значения из запроса SELECT
int OCIDefineByName (int stmt, string ColumnName, mixed variable [, int type])
Используется при необходимости возвращения запросом выборки stmt данных поля ColumnName в переменную variable (тип возвращаемых данных type можно не указывать). Имя поля должно быть указано в верхнем регистре (в запросе регистр не важен). Если вы определяете переменную, отсутствующую в запросе, ошибки не возникает.
Типы абстрактных данных (LOB/ROWID/BFILE) необходимо предварительно инициализировать функцией OCINewDescriptor().
См. также OCIBindByName().
<?php
Sconn = OCILogonC'scott". "tiger"),
Istmt = OCIParse($conn."select empno.
ename from emp"): /* the define
MUST be done BEFORE odexecute! */
OCIDefineByNametSstmt."EMPNO",Sempno);
OCIDefineByNametSstmt."ENAME".Sename):
OCIExecute($stmt):
while (OCIFetch(Sstmt))
echo "empno:".$empno.". ename:".Sename."\n";
OCIFreeStatement($stmt):
OCILogoff(Sconn): ?>
OCIBindByName
Связывание переменной РНР с Oracle
int OCIBindByName (int stmt, string ph_name, mixed invariable, int length [, int type])
Назначает переменную PHP variable для ввода-вывода данных ир операциях с Oracle в качестве параметра phjiame. Аргумент length устанавливает размер данных переменной в байтах; значение -1 указывает, что размер определяется автоматически.
Для операций с абстрактными типами (LOB/ROWID/BFILE) прел варитслыю необходимо инициализировать их дескриптор функци ей OCINewDescriptorO. Для этих типов размер length должен быт указан значением -1. Тип type может определяться следующим константами: OCI_B_FILE (двоичный файл), OCI_B_CFILE (символьны файл), OCI_B_CLOB (символьный LOB), OCI_B_BLOB (двоичный LOB) OCI_B_ROWIO (ROWID).
<?php
$sth - OCIParse ( $dbh. "begin
sp_newaddress( -addressjd.
'Sfirstname'.
'Slastname'. 'Scompany'. '$addressl'.
'$address2'. 'Scity'. 'Sstate'.
'$postalcode'. 'Scouniry'. :error_code );
end;" ).
// Вызвать хранимую процедуру
spjiewaddress.
с параметрами :address_id //
(.входной-выходной параметр) и
:error_code being <выходной).
OCIBindByName ( $$th. " :address_id".
Saddrjd. 10 ): OCIBindByName
( $sth. " :error__code". Serrorcode. 10 );
OCIExecute ( $sth ): ?>
/y**********Jc*********************x*********
<?php Sconn - OCILogonC'scott"."tiger"),
Sstmt = OCIParse($conn."insert into enp
(empno. ename) ".
"values (:empno,:ename!
1 returning ROWID into :nd"):
Sdata = arraydlll =>
"Lar-y" 2222 => "Bill". 3333 => "Jim"),
Srowid = OCINewDescnptor
($conn.OCI_D_ROWID);
ОС IBindByName(Istmt.":empno"
.&$empno.32). OCIBipdByName
($stmt."-ename".&$ename.32),
OCIBindByNametS
stmt.":rid".&$rowid.-1.0CI_B_ROWID):
Supdate = OCIParse($conn.
"update emp set sal = :sal where
ROWID = :nd"): OCIBmdByNaTO
($Update.":nd".&$rowid.-1.0CI_6_ROWID).
OCIBindBy
Namecsupdate.":sal",&$sal.32)
$sal - 10000.
while nist($enpno..$enarae)
= each($data)) { OCIExecute
($stmt). OCIExecute($Update);
$rowid->free(> OCIFreeStatement
($update): OC!FrepStatement($stmt).
$stmt = OCIParSe($conn."select *
from emp
where empno in
(1111.2222,3333)"):
OCIExecute($stmt);
while (OCIFetchInto
($stmt.&$arr.OCI_ASSOC))*
var_dump($grr).
OCIFreeStatement($stmt).
Sstmt - OCIParse($conn.
"delete from emp
where empno in (1111.2222.3333)");
OCIExecute($stmt).
OCIFreeStatement($stmt):
OCIlogoff($conn) ?>
OCI Parse
Подготовка запроса к выполнению
int OCIParse (jnt conn, strint query)
Возвращает дескриптор запроса query для подключения conn или FALSE - при ошибке.
OCIExecute
Выполнение запроса
int OCIExecute (int statement [, int mode])
Выполняет счапрос, предварительно подготовленный OCIParseO. Аргументом mode можно указать режим исполнения (по умолчанию OCI_COMMIT_Olsj_sUCCESS); если не требуется автоматическое выполнение запроса, указывайте OCI_DEFAULT.
OCICommit
Завершение незавершенных транзакций
int OCICommit (int connection)
OCIRollback
Отмена незавершенных транзакций
int OCIRollback (int connection)
OCINewDescriptor
Инициализация дескриптора LOB/FILE

string OCINewDescriptor (int connection [, int type])
Выделяет ресурсы, необходимые для хранения дескрипторов или LOB-локаторов. Тип можно указать в аргументе type: OCI_D_FILE, OCI_DJ_OB (по умолчанию), OCI_D_ROWID. Для объектов LOB доступны методы load, save и savefile, а для BFILE — только load.
<?php // фрагмент for retrieve
data use (after fetch)
Sresult = OCIResult($stmt, $n):
if ds_object (Sresult))
Sresult = Sresult->load():
II For INSERT or UPDATE
statement use
$sql = "insert into table (fieldl. field2)
values (fieldl = 'value'.
field? = empty_clob()) returning
fie!d2 into :field2"; OC!Parse
($conn. $sql): Sclob =
OCINewDescriptor($conn. OCIJM-OB).
OCIBindByName
($stmt. ":field2". &$clob. -1,
OCI_B_CL03). OCIExecute
($stmt. OCI_DEFAULT):
$clob->save ("some text"). ?>
<?php // Сценарий вызывается
формой HTML, передавая
параметры:
// $user. Spassword,
$ table. $where. и Scommitsize
$conn = OCILogon($user. Spassword);
$stmt = OCIParsetSconn.
"select rowid from Stable $v.here"):
Srowid = OCINewDescnptor
(sconn.OCI_D_ROWID);
OCIOefineB>Name($stmt.
"ROUID",&$rowid); ОС I
Execute(Sstmt). while
( OClFetch(Sstmt) ) {
$nrows = OCIRowCount(Sstmt);
Sdelete = OCIParsetSconn."delete
from Stable where ROWID - rid").
OCIBindByName
(Sdelete."-nd" &$rowid.-1.0CI_B_ROWID);
OCIExecute($deletei. print "$nrows\n",
if ( ($nrows % Scommitsize) == 0 )
{ OCIComirnt($conn). } }
Snrows = OCIRowCountC$stmt):
print "Snrows удалено . \n":
OCIFreeStatement(Sstmt); OClLogoff($conn): ?>
<?php /* Сценарий загружает файл в поле LOB */
if(Msset($lobjjpload) || $lob_upload ^= 'none'){ ?>
<form action="upload bhp" method="post"
enctype="multipart/form-data">
Upload file- <input type="file" name=
"lob_upload"><br> <input type="submit"
value="Upload"> - <inpwt type="reset">
</form> <?php } else {
// $lob_upload contains the temporary
filename of the uploaded file $conn =
OCILogon($user. Spassword); , Slob =
OCINewDescnptor($conn. OCI_D_Li)B).
Sstmt OCIParseCSconn."insert into
Stable (id. the_blob) values
(my_seq.NEXTVAL. HMPTY_BLOB(> )
returnina thp_hlob into the_blob"),
OCIBindByNarnpCSstmt. ':tne_blob',
&Slob. -1. OCIJJLOB); OCIExecuteCSsiirtt;;
1f($lob->savefi1e($lob_up1oad))
{ ОС 'ommit(Sconn);
echo "Blob successfully uploaded\n"; }else{
echo "Couldn't upload Blob\n"; }
OCIFreeDesc(Slob); OCIFreeStatement
(Sstmt): OClLogoff($conn): } ?>
OCIRowCount
Получение числа измененных записей int OCIRowCount (int statement)
Возвращается число записей, измененных запросом (например, UPDATE). Функция не возвращает число возвращенных запросом записей!
<?php $conn = OCILogonC'scott"."tiger"):
Sstmt = OCIParsetSconn,"create table
emp2 as select * from emp");
OCIExecute($stmt).
print OCIRowCount(Sstmt) .
" записей добавлено.<BR>":
OCIFreeStatement($stmt).
$stmt = OCIParse($conn."delete from emp2").
ОС I Execute(Sstmt),
print OCIRowCount(Sstmt) " записей удалено <BR>".
OCICommit(Sconn). OCIFreeStatementOstmt);
Sstmt = OCIParsetSconn."drop table emp2").
OCIExecute(Sstmt). OCIFreeStatement($stmt):
OCILogOff($conn). ?>
OCINumCols
Получение числа полей в запросе
int OCINumCols (int stmt)
<?php Sconn = OCILogonC'scott". "tiger");
Sstmt = OCIParse($conn."select * from emp"):
OCIExecutetSstmt): while ( OCIFetch($stmt) )
{ Sncols = OCINumColstSstmt); for
( $1 = 1; $i <= Sncols; $i++ ) {
Jcolumnjiame = OCIColumnName(Sstmt.$1):
Scolumn_value = OCIResultCSstmt.SD;
print $column_name .':', Scolumn_value . "\n"; )
print "\n"; } OCIFreeStatemenUSstrnt):
OCILogoff(Sconn): ?>
OCIResult
Получение значения поля записи, возвращенной запросом
mixed OCIResult (int statement, mixed column)
Возвращает данные ноля column текущей записи (см. OCIFetch()). Возвращает все типы данных как строки, за исключением абстрактных типов (ROWID, LOB и FILE).
OCIFetch
Занесение следующей возвращенной записи в буфер результата int OCIFetch (int statement)
Позволяет получить запись после запроса выборки (SELECT) с помощью последующих вызовов OCIResultO, возвращающих поля записи.
OCIFetchlnto
Занесение следующей записи в массив
Int OCIFetchlnto (int stmt, array Sresult [, int mode])
Функция позволяет поочередно получить все записи, возвращенные запросом выборки. По умолчанию массив result будет содержать все поля записи (содержащие данные, не равные NULL) с нумерацией начиная с 1.
Аргумент mode позволяет изменить действие функции. Константы могут комбинироваться сложением (например, OCI_ASSOC+OCI_RETURN_NULLS):

  • OCI_ASSOC — возвращать ассоциативный массив;
  • OCI_NUM — возвращать нумерованный массив (по умолчанию);
  • OCI_RETURN_NULLS — возвращать пустые поля;
  • OCI_RETURN_LOBS — возвращать содержимое полей LOB вместо их дескриптора.

OCIFetchStatement
Занесение результата запроса в массив
int OCIFetchStatement (int stmt, array Svariable)
Возвращает число записей, занесенных в массив variable.
<?php Sconn = OCILogonC'scott"."tiger"):
$stmt = OCIParse($conn,"select * from emp");
OCIExecute($stmt).
Snrows = OCIFetchStatement($stmt,$results);
if ( Snrows > 0 ) {
print "<TABLE BORDER=\"l\"><TR>\n";
while ( list($key. $val) = each($results) )
print "<TH>$key</TH>\n":
print "</TR>\n";
for ( $1 = 0. $1 < Snrows; $i++ )
{ print "<TR>\n"; reset($results);
while ( $column = each($results) )
{ $data = $columr>['value'] [$i];
print "<TD>$data</TD>\n"; }
print "</TR>\n":
print "</TABLE>\n": }
print "Получено Snrows записей <BR>\n";
OCIFreeStatement($stmt);
OCILogoff($conn): ?>
OCIColumnlsNULL
Проверка, содержит ли поле записи значение NULL
int OCIColumnlsNULL (Int stmt, mixed column)
Возвращает TRUE, если ноле column в результате запроса strat имеет значение NULL. Поле может указываться номером (начиная с 1) или именем.
OCIColumnName
Получение имени поля
string OCIColumnName (int stmt, int col)
<?php Sconn OCILogonC'scott". "tiger").
Snmt = OCIParse($conn."select * from emp");
ОС I Execute(Sstmt):
print "<TABLE BORDER=\"l\">
<TR><TH>Name</TH><TH>Type</TH>".
"<TH>Length</TH></TR>":
Srcols = OCINumCols($stmt): for
( $1 = 1. $1 <= $ncols>: $i++ ) { .
$column_name = OCIColumnNarae($stmt,$i);
$column_type = OCIColuranTypef$stmt.$i):
$column_size = OCIColumnSize($stmt.$i).
print "<TR><TD>$column_name</TD>
<TD>$column_type</TD>":
pn nt "<TD>$column_size</TD></TR>"; }
OCIFreeStatement($stmt):
OCILogofftSconn). ?>
См. также: OCINumCols(), OCIColumnType() и OCIColumnSize().
 
OCIColumnSize
Получение размера поля
int OCIColumnSize (Int stmt. mixed column)
См. также: OCINumCols(), OCIColumnName() и OCIColumnSize().
OCIColumnType
Получение типа поля
mixed OCIColumnType (int stmt, int col)
См. также: OCINumCols(), OCIColumnName() и OCIColumnSize().
OCIStatementType
Получение типа ОСI запроса
string OCIStatementType (int stmt)
Возвращает одно из следующих значений:

  1. «SELECT»;
  2. «UPDATE»;
  3. «DELETE»;
  4. «INSERT»;
  5. «CREATE»;
  6. «DROP»;
  7. «ALTER»;
  8. «BEGIN»;
  9. «DECLARE»;
  10. «UNKNOWN».

<?php
$conn = OCILogonC'scott"."tiger"):
$sql = "delete from emp where deptno = 10":
$stmt = OCIParse{$conn.$sql).
if ( OCIStatementType($stmt) == "DELETE" ) {
die "Вам не разрешено удалять записи этой таблицы"; }
OCII.ogoff($conn): ?>
OCINewCursor
Получение нового курсора (дескриптора запроса)
int OCINewCursor (int conn)
Используется для связывания ссылочных курсоров.
<?php // хранимая процедура info.output возвращает ref cursor в :data
Sconn = OCILogonC'scott". "tiger").
Scurs = OCINewCursor(Sconn);
Sstmt - OC!Parse($conn,"begin info.output(:data); end;");
ocibindbyname($stmt."data".&$curs.-1.0CI_B_CURSOR);
ociexecute(lstmt): ociexecute(Scurs);
while (OCIFetchInto($curs.&$data)) { var_dump($data); }
OCIFreeCursor(Sstmt); OClFreeStatement($curs);
OCILogoff($conn); ?>
<?prp // Example 2. REF CURSOR в запросе select
Sconn = OCILogonC'scott"."tiger").
$count_cursor = "CURSOR(select count(empno) num_emps from emp "
"where emp.deptno = dept.deptno)
as EMPCNT from dept"; Sstmt = OCIParse
(Sconn."select deptno.dname.Scount_cursor").
ociexecutetSstmt);
print "<TABLE BORDER=\"1\">
<TR><TH>DEPT NAHE</TH>";
print "<TH>DEPT #</TH><TH># EMPLOYEES</TH></TR>";
while (OC!FetchInto(Sstmt,&$data.OCI_ASSOO)
{ print "<TR>". Sdname = $data["DNAME"].
Sdcptno = Sdata["DEPTNO"]; print "
<TD>Sdname</TD><TD>Sdeptno</TD>",
ooexecute($data[ "EMPCNT" ]);
while (OCIFetchIntoCSdata[ "EMPCNT" ]
.&$subdata.OCI_ASSOO)
{ $num_emps = Ssubdata["NUM_EMPS"];
print "<TD>$num_emps</TD>"; } print "</TR>";
print "</TABLE>"; OClFreeStatement(Sstmt);
OCILogoff(Sconn):
OCIFreeStatement
Освобождение ресурсов, занимаемых запросом
int OCIFreeStatement (int stmt)
Возвращает TRUE или FALSE — при ошибке.
OCIFreeCursor
Освобождение ресурсов курсора
Int OCIFreeCursor (int stmt)
Возвращает TRUE или FALSE — при ошибке.
OCIFreeDesc
Уничтожение дескриптора большого объекта
int OCIFreeDesc (object lob)
Возвращает TRUE или FALSE — при ошибке.
OCI Error
Получение последнего сообщения об ошибке
array OCIError ([int stmt|conn(global])
Возвращает ассоциативный массив, содержащий элементы code (номер ошибки) и message (сообщение ошибки). Если ошибки не про-> изошло, возвращает FALSE.

Аргументом можно указать дескриптор, для которого получается сообщение.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика