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)).
Note: 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.
Runtime Konfigurácia
Toto rozšírenie nemá žiadne konfiguračné direktívy definované v php.ini.
Typy zdrojov
Preddefinované Konštanty
Konštanty uvedené nižšie sú definované týmto rozšírením a budú dostupné iba keď rozšírenie bolo buď kompilované do PHP alebo dynamicky načítané za behu (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
Example#1 OCI Hints
<?php
// by [email protected]
// 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.
Example#2 Using Stored Procedures
<?php
// by [email protected]
$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 );
?>
Table of Contents
- oci_bind_array_by_name — Binds PHP array to Oracle PL/SQL array by name
- 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 element 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->free — Frees the resources associated with the collection object
- OCI-Collection->getElem — Returns value of the element
- OCI-Collection->max — Returns 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 the 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
- oci_free_statement — Frees all resources associated with statement or cursor
- oci_internal_debug — Enables or disables internal debug output
- OCI-Lob->append — Appends data from the large object to another large object
- OCI-Lob->close — Closes LOB descriptor
- oci_lob_copy — Copies large object
- OCI-Lob->eof — Tests for end-of-file on a large object's descriptor
- OCI-Lob->erase — Erases a specified portion of the internal LOB data
- OCI-Lob->export — Exports LOB's contents to a file
- OCI-Lob->flush — Flushes/writes buffer of the LOB to the server
- OCI-Lob->free — Frees resources associated with the LOB descriptor
- OCI-Lob->getBuffering — Returns current state of buffering for the large object
- OCI-Lob->import — Imports file data to the LOB
- oci_lob_is_equal — Compares two LOB/FILE locators for equality
- OCI-Lob->load — Returns large object's contents
- OCI-Lob->read — Reads part of the large object
- OCI-Lob->rewind — Moves the internal pointer to the beginning of the large object
- OCI-Lob->save — Saves data to the large object
- OCI-Lob->saveFile — Alias pre: oci_lob_import
- OCI-Lob->seek — Sets the internal pointer of the large object
- OCI-Lob->setBuffering — Changes current state of buffering for the large object
- OCI-Lob->size — Returns size of large object
- OCI-Lob->tell — Returns current position of internal pointer of large object
- OCI-Lob->truncate — Truncates large object
- OCI-Lob->write — Writes data to the large object
- OCI-Lob->writeTemporary — Writes temporary large object
- OCI-Lob->writeToFile — Alias pre: oci_lob_export
- 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 — Alias pre: oci_bind_by_name
- OCICancel — Ukonèenie naèítavania z kurzoru
- ocicloselob — Alias pre:
- ocicollappend — Alias pre:
- ocicollassign — Alias pre:
- ocicollassignelem — Alias pre:
- ocicollgetelem — Alias pre:
- ocicollmax — Alias pre:
- ocicollsize — Alias pre:
- ocicolltrim — Alias pre:
- ocicolumnisnull — Testuje, či je výsledný stĺpec NULL
- ocicolumnname — Vráti názov ståpca
- ocicolumnprecision — Alias pre: oci_field_precision
- ocicolumnscale — Alias pre: oci_field_scale
- ocicolumnsize — Vráti veµkos» ståpca
- ocicolumntype — Vráti dátový typ ståpca
- ocicolumntyperaw — Alias pre: oci_field_type_raw
- ocicommit — Alias pre: oci_commit
- ocidefinebyname — Alias pre: oci_define_by_name
- ocierror — Alias pre: oci_error
- ociexecute — Alias pre: oci_execute
- ocifetch — Alias pre: oci_fetch
- ocifetchinto — Fetches the next row into an array (deprecated)
- ocifetchstatement — Alias pre: oci_fetch_all
- ocifreecollection — Alias pre:
- ocifreecursor — Alias pre: oci_free_statement
- ocifreedesc — Alias pre:
- ocifreestatement — Alias pre: oci_free_statement
- ociinternaldebug — Alias pre: oci_internal_debug
- ociloadlob — Alias pre:
- ocilogoff — Alias pre: oci_close
- OCILogon — Vytvorí spojenie s Oracle serverom
- ocinewcollection — Alias pre: oci_new_collection
- ocinewcursor — Alias pre: oci_new_cursor
- ocinewdescriptor — Alias pre: oci_new_descriptor
- ocinlogon — Alias pre: oci_new_connect
- ocinumcols — Alias pre: oci_num_fields
- ociparse — Alias pre: oci_parse
- ociplogon — Alias pre: oci_pconnect
- ociresult — Alias pre: oci_result
- ocirollback — Alias pre: oci_rollback
- ocirowcount — Alias pre: oci_num_rows
- ocisavelob — Alias pre:
- ocisavelobfile — Alias pre:
- ociserverversion — Alias pre: oci_server_version
- ocisetprefetch — Alias pre: oci_set_prefetch
- ocistatementtype — Alias pre: oci_statement_type
- ociwritelobtofile — Alias pre:
- ociwritetemporarylob — Alias pre: