LXXI. Oracle 8 functions

Úvod

Tieto funkcie vám umožnia prístup k Oracle8 a Oracle7 databázam. Používajú Oracle8 Call-Interface (OCI8)

Toto rozšírenie je flexibilnejšie ako štandardné Oracle rozšírenie. Podporuje previazanie globálnych alebo lokálnych PHP a Oracle premenných, plná podpora LOB, FILE a ROWID a umožňuje používať užívateľsky definované premenné.

Požiadavky

Na používanie tohto rozšírenia budete potrebovať Oracle8 klientské knižnice.

Pred používaním týchto funkcií sa uistite, že máte korektne nastavené premenné prostredia Oracle pre Oracle užívateľa, tak isto aj pre užívateľa, pod ktorým beží váš webserver. Budete potrebovať nasledujúce premenné:

  • ORACLE_HOME

  • ORACLE_SID

  • LD_PRELOAD

  • LD_LIBRARY_PATH

  • NLS_LANG

  • ORA_NLS33

Po nastavení premenných prostredia pre užívateľa, pod ktorým beží webserver sa uistite, že ste tohto užívateľa (nobody, www) pridali aj do oracle skupiny(dba)).

Ak váš webserver nenabehne alebo padne hneď po štarte: Skontrolujte, či je Apache zlinkovaný s pthread knižnicami:

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

Ak libpthread nie je na výpise, musíte preinštalovať Apache:

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

Na niektorých UnixWare je knižnica libthread namiesto libpthread. V takom prípade musia byť PHP a Apache konfigurované pomocou EXTRA_LIBS=-lthread.

Inštalácia

Musíte mať PHP skompilované s voľbou --with-oci8[=DIR], kde DIR je štandardne nastavená na premennú prostredia ORACLE_HOME.

Konfigurácia behu

This extension does not define any configuration directives.

Typy prostriedkov

Preddefinované konštanty

These constants are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

OCI_DEFAULT (integer)

OCI_DESCRIBE_ONLY (integer)

OCI_COMMIT_ON_SUCCESS (integer)

OCI_EXACT_FETCH (integer)

SQLT_BFILEE (integer)

SQLT_CFILEE (integer)

SQLT_CLOB (integer)

SQLT_BLOB (integer)

SQLT_RDD (integer)

OCI_B_SQLT_NTY (integer)

OCI_SYSDATE (integer)

OCI_B_BFILE (integer)

OCI_B_CFILEE (integer)

OCI_B_CLOB (integer)

OCI_B_BLOB (integer)

OCI_B_ROWID (integer)

OCI_B_CURSOR (integer)

OCI_B_BIN (integer)

OCI_FETCHSTATEMENT_BY_COLUMN (integer)

OCI_FETCHSTATEMENT_BY_ROW (integer)

OCI_ASSOC (integer)

OCI_NUM (integer)

OCI_BOTH (integer)

OCI_RETURN_NULLS (integer)

OCI_RETURN_LOBS (integer)

OCI_DTYPE_FILE (integer)

OCI_DTYPE_LOB (integer)

OCI_DTYPE_ROWID (integer)

OCI_D_FILE (integer)

OCI_D_LOB (integer)

OCI_D_ROWID (integer)

Príklady

Príklad 1. OCI Hints

<?php
// by sergo@bacup.ru

// Use option: OCI_DEFAULT for execute command to delay execution
OCIExecute($stmt, OCI_DEFAULT);

// for retrieve data use (after fetch):

$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();

// For INSERT or UPDATE statement use:

$sql = "insert into table (field1, field2) values (field1 = 'value',
 field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);

?>

Môžete ľahko pristupovať k uloženým procedúram rovnako ako keby ste k nim pristupovali z príkazového riadku.

Príklad 2. Using Stored Procedures

<?php
// by webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
 '$lastname', '$company', '$address1', '$address2', '$city', '$state',
 '$postalcode', '$country', :error_code );end;" );

// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable. 
// Then you do the binding:

   OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
   OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
   OCIExecute ( $sth );

?>

Obsah
OCIBindByName --  Bind a PHP variable to an Oracle Placeholder
OCICancel -- Ukončenie načítavania z kurzoru
ocicollappend -- Coming soon
ocicollassign -- Coming soon
OCICollAssignElem -- Coming soon
ocicollgetelem -- Coming soon
ocicollmax -- Coming soon
ocicollsize -- Coming soon
ocicolltrim -- Coming soon
ocicolumnisnull -- Testuje, či je výsledný stĺpec NULL
ocicolumnname -- Vráti názov stĺpca
ocicolumnprecision -- Coming soon
ocicolumnscale -- Coming soon
ocicolumnsize -- Vráti veľkosť stĺpca
ocicolumntype -- Vráti dátový typ stĺpca
ocicolumntyperaw -- Coming soon
OCICommit -- Commits outstanding transactions
OCIDefineByName --  Use a PHP variable for the define-step during a SELECT
OCIError -- Return the last error of stmt|conn|global
ociexecute -- Execute a statement
ocifetch -- Fetches the next row into result-buffer
ocifetchinto -- Fetches the next row into result-array
ocifetchstatement -- Fetch all rows of result data into an array
ocifreecollection -- Coming soon
ocifreecursor --  Free all resources associated with a cursor
ocifreedesc -- Deletes a large object descriptor
ocifreestatement --  Free all resources associated with a statement
ociinternaldebug --  Enables or disables internal debug output
ociloadlob -- Coming soon
ocilogoff -- Disconnects from Oracle server
OCILogon -- Vytvorí spojenie s Oracle serverom
ocinewcollection -- Coming soon
ocinewcursor --  Return a new cursor (Statement-Handle)
ocinewdescriptor --  Initialize a new empty LOB or FILE descriptor
ocinlogon -- Establishes a new connection to Oracle
ocinumcols --  Return the number of result columns in a statement
ociparse -- Parse a query and return an Oracle statement
ociplogon --  Connect to an Oracle database using a persistent connection
ociresult -- Returns column value for fetched row
ocirollback -- Rolls back outstanding transactions
ocirowcount -- Gets the number of affected rows
ocisavelob -- Coming soon
ocisavelobfile -- Coming soon
ociserverversion -- Return a string containing server version information
ocisetprefetch -- Sets number of rows to be prefetched
ocistatementtype -- Return the type of an OCI statement
ociwritelobtofile -- Coming soon