LXXVII. 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)

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

?>

Tartalom
oci_bind_by_name --  Binds the PHP variable to the Oracle placeholder
oci_cancel -- Cancels reading from cursor
oci_close -- Closes Oracle connection
collection->append -- Appends an object to the collection
collection->assign -- Assigns a value to the collection from another existing collection
collection->assignElem -- Assigns a value to the element of the collection
collection->getElem -- Returns value of the element
collection->max -- Gets the maximum number of elements in the collection
collection->size -- Returns size of the collection
collection->trim -- Trims elements from the end of the collection
oci_commit -- Commits outstanding statements
oci_connect -- Establishes a connection to Oracle server
oci_define_by_name --  Uses a PHP variable for the define-step during a SELECT
oci_error -- Returns the last error found
oci_execute -- Executes a statement
oci_fetch_all -- Fetches all rows of result data into an array
oci_fetch_array -- Returns the next row from the result data as an associative or numeric array, or both
oci_fetch_assoc -- Returns the next row from the result data as an associative array
oci_fetch_object -- Returns the next row from the result data as an object
oci_fetch_row -- Returns the next row from the result data as a numeric array
oci_fetch -- Fetches the next row into result-buffer
oci_field_is_null -- Checks if the field is NULL
oci_field_name -- Returns the name of a field from the statement
oci_field_precision -- Tell the precision of a field
oci_field_scale -- Tell the scale of the field
oci_field_size -- Returns field's size
oci_field_type_raw -- Tell the raw Oracle data type of the field
oci_field_type -- Returns field's data type
collection->free -- Frees resources associated with collection object
descriptor->free -- Frees resources associated with descriptor
oci_free_statement --  Frees all resources associated with statement or cursor
oci_internal_debug -- Enables or disables internal debug output
lob->append -- Appends data from the large object to another large object
lob->close -- Closes LOB descriptor
oci_lob_copy -- Copies large object
lob->eof -- Tests for end-of-file on a large object's descriptor
lob->erase -- Erases a specified portion of the internal LOB data
lob->export -- Exports LOB's contents to a file
lob->flush -- Flushes/writes buffer of the LOB to the server
lob->import -- Imports file data to the LOB
oci_lob_is_equal -- Compares two LOB/FILE locators for equality
lob->load -- Returns large object's contents
lob->read -- Reads part of large object
lob->rewind -- Moves the internal pointer to the beginning of the large object
lob->save -- Saves data to the large object
lob->seek -- Sets the internal pointer of the large object
lob->size -- Returns size of large object
lob->tell -- Returns current position of internal pointer of large object
lob->truncate -- Truncates large object
lob->writeTemporary -- Writes temporary large object
lob->write -- Writes data to the large object
oci_new_collection -- Allocates new collection object
oci_new_connect -- Establishes a new connection to the Oracle server
oci_new_cursor -- Allocates and returns a new cursor (statement handle)
oci_new_descriptor -- Initializes a new empty LOB or FILE descriptor
oci_num_fields --  Returns the number of result columns in a statement
oci_num_rows -- Returns number of rows affected during statement execution
oci_parse -- Prepares Oracle statement for execution
oci_password_change -- Changes password of Oracle's user
oci_pconnect -- Connect to an Oracle database using a persistent connection
oci_result -- Returns field's value from the fetched row
oci_rollback -- Rolls back outstanding transaction
oci_server_version -- Returns server version
oci_set_prefetch -- Sets number of rows to be prefetched
oci_statement_type -- Returns the type of an OCI statement
OCIBindByName --  PHP változó kötése egy Oracle értékhez
OCICancel -- Kurzorral olvasás befejezése
ocicloselob -- Closes lob descriptor
OCICollAppend -- [Eddig] nem dokumentált
OCICollAssign -- [Eddig] nem dokumentált
OCICollAssignElem -- [Eddig] nem dokumentált
OCICollGetElem -- [Eddig] nem dokumentált
OCICollMax -- [Eddig] nem dokumentált
OCICollSize -- [Eddig] nem dokumentált
OCICollTrim -- [Eddig] nem dokumentált
OCIColumnIsNULL -- NULL értékű mező azonosítása
OCIColumnName -- Oszlop neve egy eredménytáblában
OCIColumnPrecision -- [Eddig] nem dokumentált
OCIColumnScale -- [Eddig] nem dokumentált
OCIColumnSize -- Oszlop mérete egy eredménytáblában
OCIColumnType -- Oszlop adattípusa egy eredménytáblában
OCIColumnTypeRaw -- [Eddig] nem dokumentált
OCICommit -- Függőben lévő tranzakciók végrehajtása
OCIDefineByName --  PHP változó használata a definiálási lépésben egy SELECT számára
OCIError -- A legutóbbi parancs / kapcsolat / általános hiba visszaadása
OCIExecute -- Parancs futtatása
OCIFetch -- A következő eredmény sor lekérdezése
OCIFetchInto -- A következő sor lekérdezése tömbbe
OCIFetchStatement -- Miden eredménysor lekérdezése egy tömbbe
OCIFreeCollection -- [Eddig] nem dokumentált
OCIFreeCursor --  Kurzorhoz rendelt erőforrások felszabadítása
OCIFreeDesc -- Felszabadít egy LOB leírót
OCIFreeStatement --  Parancshoz rendelt erőforrások felszabadítása
lob->getBuffering -- Returns current state of buffering for large object
OCIInternalDebug --  A belső debug kimenet engedélyezése / letiltása
OCILoadLob -- [Eddig] nem dokumentált
OCILogOff -- Oracle kapcsolat bontása
OCILogon -- Oracle adatbázis kapcsolat létesítése
OCINewCollection -- [Eddig] nem dokumentált
OCINewCursor --  Új kurzor (parancs eredmény kezelő) megnyitása
OCINewDescriptor --  Egy új üres LOB vagy FILE leírót hoz létre
OCINLogon -- Új Oracle adatbázis kapcsolat létrehozása
OCINumCols --  Az eredményoszlopok száma egy eredménytáblában
OCIParse -- SQL lekérdezés feldolgozása, parancs visszaadása
OCIPLogon -- Oracle adatbáziscsatlakozás állandó kapcsolattal
OCIResult -- Mező értékének visszaadása lekérdezett sorból
OCIRollback -- Függőben lévő tranzakciók visszavonása
OCIRowCount -- Az érintett sorok száma
OCISaveLob -- [Eddig] nem dokumentált
OCISaveLobFile -- [Eddig] nem dokumentált
OCIServerVersion -- Szerver verzió információ visszaadása
lob->setBuffering -- Changes current state of buffering for large object
OCISetPrefetch -- Az előzetesen lehívott sorok számának beállítása
OCIStatementType -- OCI parancs típusát adja vissza
OCIWriteLobToFile -- [Eddig] nem dokumentált
ociwritetemporarylob -- Writes temporary blob