Oracle і Perl – це дуже просто

… "Чи потрібен мені працівник:
Кухар, конюх і тесля.
А де знайти мені такого
Служителі не надто дорогого? "
А. С. Пушкін, Казка про попа та його працівника Балду


Зміст



Введення


Perl – загальнодоступною мовою програмування, що існує на різних платформах ОС. Загальнодоступність його як в можливості будь-якого охочого законно і даром одержати програми і супутні матеріали з інтернету, щоб використовувати як завгодно, так і в можливості будь-якого охочого взяти участь у його розробці, яка не припиняється з 1987 року по цю пору. Іншими словами, Perl – це приклад розробки, веденої методом відкритих текстів (open source), і причому один з найбільш яскравих успішних прикладів. Розробники Perl – програмісти, створюють цю мову для своїх же потреб, і тому ця мова здатний вирішувати на диво широка різноманітність завдань. Якщо ви працюєте з Oracle, Perl допоможе вам і адмініструвати БД і СУБД, і розробляти програму, не виключаючи додаток для web, і пов'язувати компоненти ІС, розроблені в різних середовищах, один з одним. Так що ж заважає вам наслідувати приклад цілком комерційної фірми Oracle, яка використовує Perl на дисках встановлення своїх продуктів?


Установка Perl


Взагалі-то, якщо ви встановили Oracle разом з сервером HTTP (тобто Apache), то Perl у вашому розпорядженні вже є. Наприклад, для версій 8.1.6 – 9.2 він знаходиться в каталозі [ORACLE_HOME] / Apache/perl/5.00503/bin (Замініть косі рисочки на зворотні для Windows). Якщо спуститися на каталог нижче і видати perl-v, стане остаточно зрозуміло, то в штатній постачання Oracle використана версія Perl 5.0. Вона не сама остання і до того ж представлена тут в обмеженому варіанті. Він достатній для вирішення внутрішніх завдань, поставлених тут перед Perl фірмою Oracle, а вам для реальної роботи краще встановити в себе більш свіжу версію.


Відправною сторінкою web для установки Perl служить http://www.perl.com/. Тут можна знайти вихідні тексти для побудови виконуваних модулів Perl на різних платформах. Але часто простіше скористатися вже готовими виконуваними модулями, наявними для багатьох платформ, наприклад:


http://ftp.univie.ac.at/aix/ – для AIX
http://sunfreeware.com – для Solaris
http://jazz.external.hp.com/src/hp_freeware/perl/ – для HP MPE / iX
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl – для Windows, Linux і Solaris.


Perl за духом близький до Unix, але за іронією долі найпростіше його встановити саме для Windows з зазначеної вище сторінки web фірми ActiveState. (Правда, останнім часом ActiveState поширила цю простоту і на Linux з Solaris). Якщо ви скористаєтеся послугами цієї сторінки, поступитеся спокусі cкачать з інтернету більш пізню версію 5.8.4, а зупиніть краще свій вибір на 5.6.1. Це зробить зручніше роботу з Oracle, так як за станом на літо 2004 року для більш пізньої версії готовий драйвер для DBI для Oracle був, а для більш нової був відсутній.


Отриманий з інтернету файл Windows, наприклад ActivePerl-5.6.1.638-MSWin32-x86.msi, потрібно запустити (або розпакувати, якщо вибрали файл формату zip), і через півхвилини Perl встановлений. У Unix буде потрібно виконати традиційну, але нескладну процедуру побудови (make).


Подальший виклад для визначеності буде припускати установку ActivePerl на Windows; підгонка сказаного під інші платформи потребує деяких навичок, але не глибоких знань.


Перші досліди з Perl


Наберіть в консольному віконці perl-v і переконайтеся, що сіcтема Perl встановлена і потрібної версії.


Багато мов програмування використовуються не так, як мислилися їх творцям – частково або навіть повністю. Perl замислювався як мова сценаріїв для командної оболонки OC, більш розвинений і переносимість. Зараз він розвинувся до мови програмування, але цілком мети свого далекого минулого не змінив. Складемо файл scriptexample.pl:







print “this is a perl scripting example:
“;


$resultfile = “scott.tables”;
$tempfile = “temp.file”;


open(TMP, “>$tempfile”);


print TMP <<EOF;
SET PAGESIZE 0
SET FEEDBACK OFF
SET LINESIZE 30
SPOOL $resultfile
SELECT table_name FROM user_tables;
SPOOL OFF
EXIT
EOF


print `sqlplus -s scott/tiger <$tempfile`;


print ”
return code = “, system “sqlplus -s scott/tiger <$tempfile”;


open (TABLES, $resultfile);
print ”

“, <TABLES>;


print ”
end of example
“;


Зверніть увагу на такі особливості:



Наберемо у командному рядку консольного віконця ОС:


scriptexample.pl


або ж


perl scriptexample.pl


Саме завдяки можливостям компонування сценаріїв (тільки трохи порушених наведеним прикладом) Perl іноді називають "клейкою стрічкою інформаційних систем".


Іншу відому особливість мови складають можливості розбору регулярних виразів. Візьмемо приклад зі сторінки і трохи спростимо його. Підготуємо файл href.pl:






print “$2
” while m{
< s*
A s+ HREF s* = s* ([“”]) (.*?) 1
s* >
}gsix;

Наберемо (у синтаксисі Windows):


href.pl C:Perlhtml
elease.html


(Файл RELEASE.html входить в стандартну поставку ActivePerl). Зверніть увагу, що на екрані з'явилися як глобальні адреси посилань (http, ftp, mailto), так і локальні.


Безпосереднє звернення до БД


Доступ до БД під управлінням Oracle може через sqlplus зазначеним вище способом. Здібностей Perl цілком вистачить відкинути з вихідного файлу зайві рядки і символи і витягти в свої внутрішні структури змістовну частину. Іноді цього досить, але частіше вам буде потрібно звернення до БД їхні програми на Perl безпосередньо, наприклад тому, що це ефективніше, або тому що sqlplus в наявності немає.


Perl дозволяє спілкуватися безпосередньо з багатьма типами БД, і спілкування з СУБД Oracle реалізовано в цій мові як окремий випадок загального рішення. Правда для "справжніх" СУБД (не "персональних") історія цього загального рішення почалася в Perl з 90-ми роками саме з окремого випадку Oracle. З іншого боку, для Oracle в Perl є і суто власне рішення, спілкування через OCI, яке тут на розглядається (для довідки: це реалізується за допомогою модуля Oracle:: OCI в Perl).


Спілкування з БД "взагалі" реалізується в Perl за допомогою спеціального інтерфейсу під назвою DBI (літера i – independent – означає незалежність від конкретного типу БД). Для роботи з конкретною БД того ж потрібно встановити драйвер DBD, розрахований на цей тип бази (літера d – dependent – означає залежність від конкретного типу БД). Інтерфейс DBI і драйвер Oracle DBD реалізовані у вигляді модулів Perl, і їх можна встановити зі сторінок архівів Perl, званих CPAN (Comprehensive Perl Archive Network). У ActivePerl це можна зробити простіше за допомогою програми ppm. Достатньо увійти до неї і виконати команди:


ppm
PPM> install DBI
PPM> install DBD-Oracle
PPM> query
PPM> exit


Команда query дозволить переглянути всі встановлені модулі і упевнитися в наявності DBI і DBD-Oracle.


Тепер все готово до перевірки роботи з Oracle. Складемо файл HelloMiller.pl:







use strict;
use DBI;


my $dbh = DBI ->connect( “dbi:Oracle:orcl”, “scott”, “tiger”,
{RaiseError => 1,
AutoCommit => 0} );;


my $sql = qq{ SELECT ename, sal, COMM FROM emp };


my $sth = $dbh->prepare( $sql );


$sth->execute();


while ( my($ename, $sal, $comm) = $sth->fetchrow_array) {
printf (“%-10s %7.2d %7.2d”, $ename, $sal, $comm);
if ($ename =~ /MILLER/) { print “, Hello Miller !”; }
print ”
“;
}


$dbh->disconnect();


Запустимо програму:


HelloMiller.pl або perl HelloMiller.pl


Ідею привітати Міллера я запозичив з книги http://www.ccas.ru/prz/ORA/oracleopensource.html.


Клієнт-сервер – це ще не все


Наведений приклад звернення до Oracle відноситься до архітектури клієнт-сервер. Нею можливості Perl не вичерпуються. Коли ви познайомитеся з технологіями Perl докладніше, ви виявите цілий ряд додаткових способів використання мови:


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*