LXXI. Oracle 8 Funktionen

Diese Funktionen gestatten den Zugriff auf Oracle7 und Oracle8 Datenbanken. Es wird hierbei das Oracle8 Call-Interface (OCI8) verwendet, welches installierte Oracle8 Client Bibliotheken (Libraries) benötigt.

Diese Schnittstelle ist flexibler als die Standard Oracle Funktionen. Es unterstützt Binding von localen und globalen PHP Variablen an Oracle Platzhalter und hat volle LOB,FILE und ROWID Unterstützung und gestattet dem Benutzer die Verwendung von Variablendefines.

Vor der Benutzung dieser Erweiterung sollten Sie sicherstellen die folgenden Umgebungsvariablen für den Webserveruser VOR dem Start des Webservers gesetzt zu haben.

  • ORACLE_HOME

  • ORACLE_SID

  • LD_PRELOAD

  • LD_LIBRARY_PATH

  • NLS_LANG

  • ORA_NLS33

Nachdem Sie die Umgebungsvariablen festgelegt haben, stellen Sie sicher, das die Dateien im ORACLE_HOME/network/admin für den Webserver lesbar sind.

Wenn der Webserver abstürzt nach dem Start, oder nicht startet: Überprüfen Sie, ob der Apache gegen -lpthread gelink ist:

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

Wenn libpthread hier nicht gelistet ist, dann muss der Webserver neu übersetzt werden:

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

Beispiel 1. OCI Hinweise

<?php
// by sergo@bacup.ru

// Die Option OCI_DEFAULT führt die Anweisung in einer Transaktion aus 
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);

?>

Man kann auf Stored Procedures auf einfache Weise zugreifen.

Beispiel 2. Stored Procedures benutzen

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

?>

Inhaltsverzeichnis
ocibindbyname -- Bindet eine PHP-Variable an einen Oracle Platzhalter
ocicancel -- bricht das lesen von einem cursor ab
ocicollappend -- Coming soon
ocicollassign -- Kommt noch.
ocicollassignelem -- Kommt noch.
ocicollgetelem -- Kommt noch.
ocicollmax -- Kommt noch.
ocicollsize -- Kommt noch.
ocicolltrim -- Kommt noch.
ocicolumnisnull -- Testet eine Spalte ob deren Inhalt NULL ist
ocicolumnname -- Liefert den Namen der Spalte zurück.
ocicolumnprecision -- Kommt noch.
ocicolumnscale -- Kommt noch.
ocicolumnsize -- Gibt die Grösse einer Spalte zurück
ocicolumntype -- Liefert den Datentyp einer Spalte zurück.
ocicolumntyperaw -- Kommt noch.
ocicommit -- Committet eine ausstehende Transaktion.
ocidefinebyname -- Definiert eine PHP Variable als Platzhalter für die Werte eines SELECTs
ocierror -- Gibt den letzten Fehler von stmt|conn|global zurück oder FALSE, wenn kein Fehler aufgetreten ist.
ociexecute -- führt ein Statement aus.
ocifetch -- Fetcht die nächste Ergebniszeile in den Ergebnispuffer
ocifetchinto -- Fetcht die nächste Zeile eines Ergebnisses in ein Array
ocifetchstatement -- Fetcht die Ergebnisse in ein Array
ocifreecollection -- Kommt noch.
ocifreecursor -- Gibt alle mit dem cursor verbundenen Ressourcen frei.
ocifreedesc -- Deletes a large object descriptor
ocifreestatement -- Gibt alle mit dem Statement verbundenen Ressourcen frei.
ociinternaldebug -- Aktiviert oder deaktiviert die interne Debugausgabe. Die Voreinstellung ist deaktiviert.
ociloadlob -- Kommt noch.
ocilogoff -- Schliesst eine Datenbankverbindung zu Oracle
ocilogon -- Baut eine OCI-Verbindung auf
ocinewcollection -- Kommt noch.
ocinewcursor -- return a new cursor (Statement-Handle) - use this to bind ref-cursors!
ocinewdescriptor -- Initialize a new empty descriptor LOB/FILE (LOB is default)
ocinlogon -- Logt sich in die Oracle Datenbank ein und erzeugt dabei eine neue Oracle Session.
ocinumcols -- Gibt die Anzahl der Spalten in einem Statement zurück
ociparse -- Analysiert eine Abfrage und gibt eine Anweisung zurück.
ociplogon -- Logt sich persistent in die Oracle Datenbank ein und erzeugt eine neue Oracle Session.
ociresult -- Gibt einen Spaltenwert für das gefetchte Statement zurück
ocirollback -- Macht ausstehende Transaktionen rückgängig
ocirowcount -- Gibt die Anzahl der betroffenen Zeilen zurück
ocisavelob -- Kommt noch.
ocisavelobfile -- Kommt noch.
ociserverversion -- Return a string containing server version information.
ocisetprefetch -- setzt die Anzahl der Zeilen die vorab gefetcht werden sollen
ocistatementtype -- Gibt den Typ eine Statements zurück
ociwritelobtofile -- Kommt noch.