diff options
Diffstat (limited to 'framework/DataAccess/adodb/drivers/adodb-oracle.inc.php')
-rw-r--r-- | framework/DataAccess/adodb/drivers/adodb-oracle.inc.php | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/framework/DataAccess/adodb/drivers/adodb-oracle.inc.php b/framework/DataAccess/adodb/drivers/adodb-oracle.inc.php deleted file mode 100644 index 99e76482..00000000 --- a/framework/DataAccess/adodb/drivers/adodb-oracle.inc.php +++ /dev/null @@ -1,320 +0,0 @@ -<?php -/* -V4.72 21 Feb 2006 (c) 2000-2006 John Lim (jlim@natsoft.com.my). All rights reserved. - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - - Latest version is available at http://adodb.sourceforge.net - - Oracle data driver. Requires Oracle client. Works on Windows and Unix and Oracle 7. - - If you are using Oracle 8 or later, use the oci8 driver which is much better and more reliable. -*/ - -// security - hide paths -if (!defined('ADODB_DIR')) die(); - -class ADODB_oracle extends ADOConnection { - var $databaseType = "oracle"; - var $replaceQuote = "''"; // string to use to replace quotes - var $concat_operator='||'; - var $_curs; - var $_initdate = true; // init date to YYYY-MM-DD - var $metaTablesSQL = 'select table_name from cat'; - var $metaColumnsSQL = "select cname,coltype,width from col where tname='%s' order by colno"; - var $sysDate = "TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD')"; - var $sysTimeStamp = 'SYSDATE'; - var $connectSID = true; - - function ADODB_oracle() - { - } - - // format and return date string in database date format - function DBDate($d) - { - if (is_string($d)) $d = ADORecordSet::UnixDate($d); - return 'TO_DATE('.adodb_date($this->fmtDate,$d).",'YYYY-MM-DD')"; - } - - // format and return date string in database timestamp format - function DBTimeStamp($ts) - { - - if (is_string($ts)) $d = ADORecordSet::UnixTimeStamp($ts); - return 'TO_DATE('.adodb_date($this->fmtTimeStamp,$ts).",'RRRR-MM-DD, HH:MI:SS AM')"; - } - - - function BeginTrans() - { - $this->autoCommit = false; - ora_commitoff($this->_connectionID); - return true; - } - - - function CommitTrans($ok=true) - { - if (!$ok) return $this->RollbackTrans(); - $ret = ora_commit($this->_connectionID); - ora_commiton($this->_connectionID); - return $ret; - } - - - function RollbackTrans() - { - $ret = ora_rollback($this->_connectionID); - ora_commiton($this->_connectionID); - return $ret; - } - - - /* there seems to be a bug in the oracle extension -- always returns ORA-00000 - no error */ - function ErrorMsg() - { - if ($this->_errorMsg !== false) return $this->_errorMsg; - - if (is_resource($this->_curs)) $this->_errorMsg = @ora_error($this->_curs); - if (empty($this->_errorMsg)) $this->_errorMsg = @ora_error($this->_connectionID); - return $this->_errorMsg; - } - - - function ErrorNo() - { - if ($this->_errorCode !== false) return $this->_errorCode; - - if (is_resource($this->_curs)) $this->_errorCode = @ora_errorcode($this->_curs); - if (empty($this->_errorCode)) $this->_errorCode = @ora_errorcode($this->_connectionID); - return $this->_errorCode; - } - - - - // returns true or false - function _connect($argHostname, $argUsername, $argPassword, $argDatabasename, $mode=0) - { - if (!function_exists('ora_plogon')) return null; - - // <G. Giunta 2003/03/03/> Reset error messages before connecting - $this->_errorMsg = false; - $this->_errorCode = false; - - // G. Giunta 2003/08/13 - This looks danegrously suspicious: why should we want to set - // the oracle home to the host name of remote DB? -// if ($argHostname) putenv("ORACLE_HOME=$argHostname"); - - if($argHostname) { // code copied from version submitted for oci8 by Jorma Tuomainen <jorma.tuomainen@ppoy.fi> - if (empty($argDatabasename)) $argDatabasename = $argHostname; - else { - if(strpos($argHostname,":")) { - $argHostinfo=explode(":",$argHostname); - $argHostname=$argHostinfo[0]; - $argHostport=$argHostinfo[1]; - } else { - $argHostport="1521"; - } - - - if ($this->connectSID) { - $argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname - .")(PORT=$argHostport))(CONNECT_DATA=(SID=$argDatabasename)))"; - } else - $argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname - .")(PORT=$argHostport))(CONNECT_DATA=(SERVICE_NAME=$argDatabasename)))"; - } - - } - - if ($argDatabasename) $argUsername .= "@$argDatabasename"; - - //if ($argHostname) print "<p>Connect: 1st argument should be left blank for $this->databaseType</p>"; - if ($mode = 1) - $this->_connectionID = ora_plogon($argUsername,$argPassword); - else - $this->_connectionID = ora_logon($argUsername,$argPassword); - if ($this->_connectionID === false) return false; - if ($this->autoCommit) ora_commiton($this->_connectionID); - if ($this->_initdate) { - $rs = $this->_query("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'"); - if ($rs) ora_close($rs); - } - - return true; - } - - - // returns true or false - function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename) - { - return $this->_connect($argHostname, $argUsername, $argPassword, $argDatabasename, 1); - } - - - // returns query ID if successful, otherwise false - function _query($sql,$inputarr=false) - { - // <G. Giunta 2003/03/03/> Reset error messages before executing - $this->_errorMsg = false; - $this->_errorCode = false; - - $curs = ora_open($this->_connectionID); - - if ($curs === false) return false; - $this->_curs = $curs; - if (!ora_parse($curs,$sql)) return false; - if (ora_exec($curs)) return $curs; - // <G. Giunta 2004/03/03> before we close the cursor, we have to store the error message - // that we can obtain ONLY from the cursor (and not from the connection) - $this->_errorCode = @ora_errorcode($curs); - $this->_errorMsg = @ora_error($curs); - // </G. Giunta 2004/03/03> - @ora_close($curs); - return false; - } - - - // returns true or false - function _close() - { - return @ora_logoff($this->_connectionID); - } - - - -} - - -/*-------------------------------------------------------------------------------------- - Class Name: Recordset ---------------------------------------------------------------------------------------*/ - -class ADORecordset_oracle extends ADORecordSet { - - var $databaseType = "oracle"; - var $bind = false; - - function ADORecordset_oracle($queryID,$mode=false) - { - - if ($mode === false) { - global $ADODB_FETCH_MODE; - $mode = $ADODB_FETCH_MODE; - } - $this->fetchMode = $mode; - - $this->_queryID = $queryID; - - $this->_inited = true; - $this->fields = array(); - if ($queryID) { - $this->_currentRow = 0; - $this->EOF = !$this->_fetch(); - @$this->_initrs(); - } else { - $this->_numOfRows = 0; - $this->_numOfFields = 0; - $this->EOF = true; - } - - return $this->_queryID; - } - - - - /* Returns: an object containing field information. - Get column information in the Recordset object. fetchField() can be used in order to obtain information about - fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by - fetchField() is retrieved. */ - - function &FetchField($fieldOffset = -1) - { - $fld = new ADOFieldObject; - $fld->name = ora_columnname($this->_queryID, $fieldOffset); - $fld->type = ora_columntype($this->_queryID, $fieldOffset); - $fld->max_length = ora_columnsize($this->_queryID, $fieldOffset); - return $fld; - } - - /* Use associative array to get fields array */ - function Fields($colname) - { - if (!$this->bind) { - $this->bind = array(); - for ($i=0; $i < $this->_numOfFields; $i++) { - $o = $this->FetchField($i); - $this->bind[strtoupper($o->name)] = $i; - } - } - - return $this->fields[$this->bind[strtoupper($colname)]]; - } - - function _initrs() - { - $this->_numOfRows = -1; - $this->_numOfFields = @ora_numcols($this->_queryID); - } - - - function _seek($row) - { - return false; - } - - function _fetch($ignore_fields=false) { -// should remove call by reference, but ora_fetch_into requires it in 4.0.3pl1 - if ($this->fetchMode & ADODB_FETCH_ASSOC) - return @ora_fetch_into($this->_queryID,&$this->fields,ORA_FETCHINTO_NULLS|ORA_FETCHINTO_ASSOC); - else - return @ora_fetch_into($this->_queryID,&$this->fields,ORA_FETCHINTO_NULLS); - } - - /* close() only needs to be called if you are worried about using too much memory while your script - is running. All associated result memory for the specified result identifier will automatically be freed. */ - - function _close() -{ - return @ora_close($this->_queryID); - } - - function MetaType($t,$len=-1) - { - if (is_object($t)) { - $fieldobj = $t; - $t = $fieldobj->type; - $len = $fieldobj->max_length; - } - - switch (strtoupper($t)) { - case 'VARCHAR': - case 'VARCHAR2': - case 'CHAR': - case 'VARBINARY': - case 'BINARY': - if ($len <= $this->blobSize) return 'C'; - case 'LONG': - case 'LONG VARCHAR': - case 'CLOB': - return 'X'; - case 'LONG RAW': - case 'LONG VARBINARY': - case 'BLOB': - return 'B'; - - case 'DATE': return 'D'; - - //case 'T': return 'T'; - - case 'BIT': return 'L'; - case 'INT': - case 'SMALLINT': - case 'INTEGER': return 'I'; - default: return 'N'; - } - } -} -?>
\ No newline at end of file |