XCI. 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
oci_bind_by_name --  Binds the PHP variable to the Oracle placeholder
oci_cancel -- Cancels reading from cursor
oci_close -- Closes Oracle connection
OCI-Collection->append -- Appends an object to the collection
OCI-Collection->assign -- Assigns a value to the collection from another existing collection
OCI-Collection->assignElem -- Assigns a value to the element of the collection
OCI-Collection->getElem -- Returns value of the element
OCI-Collection->free -- Frees resources associated with collection object
OCI-Collection->max -- Gets the maximum number of elements in the collection
OCI-Collection->size -- Returns size of the collection
OCI-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
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 -- Bindet eine PHP-Variable an einen Oracle Platzhalter
ocicancel -- bricht das lesen von einem cursor ab
ocicloselob -- Closes lob descriptor
ocicollappend -- Append an object to the collection
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.
lob->getBuffering -- Returns current state of buffering for large object
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.
lob->setBuffering -- Changes current state of buffering for large object
ocisetprefetch -- setzt die Anzahl der Zeilen die vorab gefetcht werden sollen
ocistatementtype -- Gibt den Typ eine Statements zurück
ociwritelobtofile -- Kommt noch.
ociwritetemporarylob -- Writes temporary blob

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:25