Использование технологий WWW для доступа к базам данных

       

Основные функции доступа


Мы приведем здесь пример программы, которая создает таблицу, помещает

в нее некоторые данные и потом производит выборку строк из этой таблицы.

#!/usr/local/bin/perl

use Oraperl;

# подключаем модуль Oraperl

$system_id = 'T:bdhost.com:Base';

$lda = &ora_login($system_id,'scott','tiger');

# вход в систему

$st = 'create table EMP (name varchar2(100),

organization varchar2(100))';

$csr = &ora_open($lda,$st) die $ora_errstr;

&ora_close($csr);

# создание таблицы в базе данных



$st = 'insert into EMP values

(\'John Smit\', \'NATO\')';

$csr = &ora_open($lda, $st);

&ora_close($csr);

# помещение строки в таблицу

В результате в базе создалась таблица из двух столбцов с одной записью:

Name

Organization
John Smit NATO

$st = 'select name from EMP

where organization = \'NATO\'';

$csr = &ora_open($lda,$st);

# выбираем из таблицы значения столбца name,

# которым сответствует значение столбца organization

# равное 'NATO'

@result = &ora_fetch($csr);

# помещаем эти значения в массив @result

&ora_close($csr);

print @result;

&ora_logoff($lda);

# выход из системы

Для взаимодействия с Oracle в Perl есть специальный модуль Oraperl.pm.

Основными функциями для доступа к базе данных являются:


&ora_login

$lda = &ora_login($system_id,$username,$password)

Для того, чтобы получить доступ к информации, хранимой в Oracle необходимо сначала

войти в систему. Это осуществляется вызовом функции &ora_login(). Эта функция

имеет три параметра: системный идентификатор базы данных, имя пользователя в базе

и пароль пользователя. Возвращается идентификатор регистрации в системе (Oracle Login Data Area).

Несколько доступов могут осуществляться одновременно. Эта функция

эквивалентна функции OCI(Oracle Call Interface) olon или orlon.


&ora_open

$csr = &ora_open($lda, $statement [,$cache])

Для определения SQL-запроса в базу данных программа должна вызывать функцию

&ora_open. Эта функция имеет как минимум два параметра: идентификатор регистрации


и SQL выражение. Необязательный третий параметр описывает размер буфера строк для

SELECT оператора. Возвращается курсор Oracle. Если третий параметр опущен,

то используется стандартный размер буфера.

$csr = &ora_open($lda,'select ename,

sal from emp order by ename',10);

Эта функция эквивалентна функции OCI oopen или oparse.

&ora_bind

&ora_bind($csr, $var, ...)

Если SQL выражение содержит обращение к переменным языка Perl, то необходимо подставить вместо имен

значения переменных. Для этого используется функция &ora_bind.

$csr = &ora_open($lda, 'insert into emp values (:1,:2)');

&ora_bind($csr,$ename,$sal);

- подставляет в SQL выражение вместо :1 и :2 значения переменных $ename

и $sal.

&ora_fetch

$nfields = &ora_fetch($csr[, trunc]);

@array = &ora_fetch($csr);

Эта функция используется с оператором SQL SELECT для

извлечения информации из базы данных и имеет только один обязательный параметр

- идентификатор курсора, полученный в результате вызова функции &ora_open. В скалярном

контексте она возвращает число выбранных строк, в списковом - массив выбранных

строк. Второй необязательный параметр содержит информацию о том, можно ли обрезать

данные типов LONG и LONG RAW или выдавать сообщение об ошибке. Если параметр

опущен, то информация берется из переменной $ora_trunc.

Если произошло обрезание данных, то переменная $ora_errno принимает значение

1406. Эта функция эквивалентна функции OCI ofetch.

&ora_close

&ora_close($csr)

Если открытый курсор не будет больше использоваться, то его нужно закрыть

вызовом функции &ora_close. Это эквивалентно функции OCI oclose.

&ora_do

&ora_do($lda,$statement)

Не все SQL-выражения возвращают данные или содержат переменные для подстановки.

В таких случаях функция &ora_do выступает в качестве альтернативы &ora_open

и &ora_close. Первым параметром является идентификатор регистрации, вторым --

SQL выражение.

&ora_do($lda,'drop table employee');

это эквивалентно:

&ora_close(&ora_open($lda, 'drop table employee'));

&ora_logoff

&ora_logoff($lda)

Для выхода из системы используется

функция &ora_logoff. Она эквивалентна функции OCI ologoff.


Содержание раздела