PHP kézikönyv
Előző |  | Következő

# C. Oracle 8 függvények

Ezekkel a függvényekkel az Oracle8 és Oracle7 adatbázisokat érheted el, az Oracle8 Call-Interface (OCI8) használatával. Az Oracle8 kliens könyvtárakra szükséged lesz, ha szeretnéd ezt a kiterjesztést használni.

Ez a kiterjesztés rugalmasabb, mint a hagyományos Oracle kiterjesztés. Lehetővé teszi globális és lokális PHP változók kötését Oracle értékekhez, teljes LOB, FILE és ROWID támogatással rendelkezik, és lehetővé teszi a felhasználó által megadott változók használatát.

Mielőtt elkezdenéd használni ezt a kiterjesztést, győződj meg róla, hogy az Oracle környezeti változók helyesen be vannak állítva az Oracle és a webszerver felhasználó számára. Az értékek, amiket esetleg be kell állítanod a kövezkezők:

- ORACLE_HOME

- ORACLE_SID

- LD_PRELOAD

- LD_LIBRARY_PATH

- NLS_LANG

- ORA_NLS33

Miután beállítottad a könyezeti változókat a webszerver felhasználó számára, add hozzá a webszerver felhasználót (nobody, www) az oracle csoporthoz.

> Ha a webszerver nem indul el, vagy lefagy induláskor: Ellenőrizd, hogy az Apache szervert a pthread könyvtárral fordítottad-e:

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

> Jó tisztában lenni azzal is, hogy bizonyos rendszereken, mint amilyen például az UnixWare, ezt a függvénykönyvtárat libthread-nek nevezik a máshol hasznélt libpthread helyett. Ez esetben a PHP-t és az Apache-ot is az EXTRA_LIBS=-lthread beállítással kell konfigurálni.

> Ha a libpthread nincs bent a listában, újra kell telepítened az Apache szervert:

>     # cd /usr/src/apache_1.3.xx
>     # make clean
>     # LIBS=-lpthread ./config.status
>     # make
>     # make install

Példa 1. OCI tippek
`<?php // A tippeket sergo@bacup.ru küldte be // Használd az OCI_DEFAULT opciót a végrehajtásnál, // ha késleltetni szeternéd a végrehjtást OCIExecute($stmt, OCI_DEFAULT); // Lekérdezett adatok használatához (fetch után): $result = OCIResult($stmt, $n); if (is_object($result)) { $result = $result->load(); } // INSERT vagy UPDATE parancsokhoz: $sql = "insert into table (mezo1, mezo2) values (mezo1 = 'érték', mezo2 = empty_clob()) returning mezo2 into :mezo2"; OCIParse($conn, $sql); $clob = OCINewDescriptor($conn, OCI_D_LOB); OCIBindByName($stmt, ":mezo2", &$clob, -1, OCI_B_CLOB); OCIExecute($stmt, OCI_DEFAULT); $clob->save("valami szöveg"); OCICommit($conn); ?>`

Könnyen elérheted a tárolt eljárásokat, éppen úgy, mint parancssorból.

Példa 2. Tárolt eljárások használata
`<?php // webmaster@remoterealty.com küldte be a következő kódot: $sth = OCIParse ( $dbh, "begin sp_newaddress( :cimid, '$keresztnev', '$csaladinev', '$ceg', '$cim1', '$cim2', '$varos', '$megye', '$irszam', '$orszag', :hibakod );end;" ); // Ez a parancs meghívja az sp_newaddress nevű tárolt eljárást, // a :cimid ki és bemeneti változóval és a :hibakod kimeneti // változóval. Ezután a változó kötéseket kell elvégezni: OCIBindByName ( $sth, ":cimid", $cimid, 10 ); OCIBindByName ( $sth, ":hibakod", $hibakod, 10 ); OCIExecute ( $sth ); ?>`

Előző | Tartalom | Következő
overload | Fel | OCI-Collection->append