3 V4.22 15 Apr 2004 (c) 2000-2004 John Lim (jlim@natsoft.com.my). All rights reserved.
4 Released under both BSD license and Lesser GPL library license.
5 Whenever there is any discrepancy between the two licenses,
6 the BSD license will take precedence.
7 Set tabs to 4 for best viewing.
9 Latest version is available at http://php.weblogs.com/
11 Oracle support via ODBC. Requires ODBC. Works on Windows.
14 if (!defined('_ADODB_ODBC_LAYER')) {
15 include(ADODB_DIR . "/drivers/adodb-odbc.inc.php");
18 class ADODB_odbc_oracle extends ADODB_odbc
20 var $databaseType = 'odbc_oracle';
21 var $replaceQuote = "''"; // string to use to replace quotes
22 var $concat_operator = '||';
23 var $fmtDate = "'Y-m-d 00:00:00'";
24 var $fmtTimeStamp = "'Y-m-d h:i:sA'";
25 var $metaTablesSQL = 'select table_name from cat';
26 var $metaColumnsSQL = "select cname,coltype,width from col where tname='%s' order by colno";
27 var $sysDate = "TRUNC(SYSDATE)";
28 var $sysTimeStamp = 'SYSDATE';
30 //var $_bindInputArray = false;
32 function ADODB_odbc_oracle()
37 function &MetaTables()
39 if ($this->metaTablesSQL) {
40 $rs = $this->Execute($this->metaTablesSQL);
41 if ($rs === false) return false;
42 $arr = $rs->GetArray();
44 for ($i = 0; $i < sizeof($arr); $i++) {
45 $arr2[] = $arr[$i][0];
53 function &MetaColumns($table)
55 if (!empty($this->metaColumnsSQL)) {
57 $rs = $this->Execute(sprintf($this->metaColumnsSQL, strtoupper($table)));
58 if ($rs === false) return false;
61 while (!$rs->EOF) { //print_r($rs->fields);
62 $fld = new ADOFieldObject();
63 $fld->name = $rs->fields[0];
64 $fld->type = $rs->fields[1];
65 $fld->max_length = $rs->fields[2];
67 if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;
68 else $retarr[strtoupper($fld->name)] = $fld;
78 // returns true or false
79 function _connect($argDSN, $argUsername, $argPassword, $argDatabasename)
84 $this->_connectionID = odbc_connect($argDSN, $argUsername, $argPassword, SQL_CUR_USE_ODBC);
85 $this->_errorMsg = $php_errormsg;
87 $this->Execute("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
88 //if ($this->_connectionID) odbc_autocommit($this->_connectionID,true);
89 return $this->_connectionID != false;
92 // returns true or false
93 function _pconnect($argDSN, $argUsername, $argPassword, $argDatabasename)
97 $this->_connectionID = odbc_pconnect($argDSN, $argUsername, $argPassword, SQL_CUR_USE_ODBC);
98 $this->_errorMsg = $php_errormsg;
100 $this->Execute("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
101 //if ($this->_connectionID) odbc_autocommit($this->_connectionID,true);
102 return $this->_connectionID != false;
106 class ADORecordSet_odbc_oracle extends ADORecordSet_odbc
109 var $databaseType = 'odbc_oracle';
111 function ADORecordSet_odbc_oracle($id, $mode = false)
113 return $this->ADORecordSet_odbc($id, $mode);