1<?php
2/*
3V4.65 22 July 2005  (c) 2000-2005 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.
7Set tabs to 4 for best viewing.
8
9  Latest version is available at http://adodb.sourceforge.net
10
11  Oracle support via ODBC. Requires ODBC. Works on Windows.
12*/
13// security - hide paths
14if (!defined('ADODB_DIR')) die();
15
16if (!defined('_ADODB_ODBC_LAYER')) {
17	include(ADODB_DIR."/drivers/adodb-odbc.inc.php");
18}
19
20
21class  ADODB_odbc_oracle extends ADODB_odbc {
22	var $databaseType = 'odbc_oracle';
23 	var $replaceQuote = "''"; // string to use to replace quotes
24	var $concat_operator='||';
25	var $fmtDate = "'Y-m-d 00:00:00'";
26	var $fmtTimeStamp = "'Y-m-d h:i:sA'";
27	var $metaTablesSQL = 'select table_name from cat';
28	var $metaColumnsSQL = "select cname,coltype,width from col where tname='%s' order by colno";
29	var $sysDate = "TRUNC(SYSDATE)";
30	var $sysTimeStamp = 'SYSDATE';
31
32	//var $_bindInputArray = false;
33
34	function ADODB_odbc_oracle()
35	{
36		$this->ADODB_odbc();
37	}
38
39	function &MetaTables()
40	{
41		$false = false;
42		$rs = $this->Execute($this->metaTablesSQL);
43		if ($rs === false) return $false;
44		$arr = $rs->GetArray();
45		$arr2 = array();
46		for ($i=0; $i < sizeof($arr); $i++) {
47			$arr2[] = $arr[$i][0];
48		}
49		$rs->Close();
50		return $arr2;
51	}
52
53	function &MetaColumns($table)
54	{
55
56		$rs = $this->Execute(sprintf($this->metaColumnsSQL,strtoupper($table)));
57		if ($rs === false) {
58			$false = false;
59			return $false;
60		}
61		$retarr = array();
62		while (!$rs->EOF) { //print_r($rs->fields);
63			$fld = new ADOFieldObject();
64			$fld->name = $rs->fields[0];
65			$fld->type = $rs->fields[1];
66			$fld->max_length = $rs->fields[2];
67
68
69			if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;
70			else $retarr[strtoupper($fld->name)] = $fld;
71
72			$rs->MoveNext();
73		}
74		$rs->Close();
75		return $retarr;
76	}
77
78	// returns true or false
79	function _connect($argDSN, $argUsername, $argPassword, $argDatabasename)
80	{
81	global $php_errormsg;
82
83		$php_errormsg = '';
84		$this->_connectionID = odbc_connect($argDSN,$argUsername,$argPassword,SQL_CUR_USE_ODBC );
85		$this->_errorMsg = $php_errormsg;
86
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;
90	}
91	// returns true or false
92	function _pconnect($argDSN, $argUsername, $argPassword, $argDatabasename)
93	{
94	global $php_errormsg;
95		$php_errormsg = '';
96		$this->_connectionID = odbc_pconnect($argDSN,$argUsername,$argPassword,SQL_CUR_USE_ODBC );
97		$this->_errorMsg = $php_errormsg;
98
99		$this->Execute("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
100		//if ($this->_connectionID) odbc_autocommit($this->_connectionID,true);
101		return $this->_connectionID != false;
102	}
103}
104
105class  ADORecordSet_odbc_oracle extends ADORecordSet_odbc {
106
107	var $databaseType = 'odbc_oracle';
108
109	function ADORecordSet_odbc_oracle($id,$mode=false)
110	{
111		return $this->ADORecordSet_odbc($id,$mode);
112	}
113}
114?>