21 if (!defined(
'ADODB_DIR'))
die();
23 include_once(ADODB_DIR.
'/drivers/adodb-oci8.inc.php');
28 var
$metaColumnsSQL =
"select lower(cname),coltype,width, SCALE, PRECISION, NULLS, DEFAULTVAL from col where tname='%s' order by colno";
29 var
$metaTablesSQL =
"select lower(table_name),table_type from cat where table_type in ('TABLE','VIEW')";
33 $this->_hasOCIFetchStatement = ADODB_PHPVER >= 0x4200;
34 # oci8po does not support adodb extension: adodb_movenext() 44 $sqlarr = explode(
'?',
$sql);
46 for ($i = 1, $max =
sizeof($sqlarr); $i < $max; $i++) {
47 $sql .=
':'.($i-1) . $sqlarr[$i];
54 return ADOConnection::Execute(
$sql,$inputarr);
60 if (is_array($inputarr)) {
63 foreach($inputarr as $v) {
64 $arr[
'bind'.$i++] = $v;
67 $sqlarr = explode(
'?',
$sql);
69 foreach($inputarr as $k => $v) {
70 $sql .=
":$k" . $sqlarr[++$i];
93 if ($this->fetchMode & OCI_ASSOC)
return $this->fields[$colname];
96 $this->bind = array();
97 for ($i=0; $i < $this->_numOfFields; $i++) {
98 $o = $this->FetchField($i);
99 $this->bind[strtoupper($o->name)] = $i;
102 return $this->fields[$this->bind[strtoupper($colname)]];
108 $fld =
new ADOFieldObject;
110 $fld->name = OCIcolumnname($this->_queryID, $fieldOffset);
111 if (ADODB_ASSOC_CASE == 0) $fld->name = strtolower($fld->name);
112 $fld->type = OCIcolumntype($this->_queryID, $fieldOffset);
113 $fld->max_length = OCIcolumnsize($this->_queryID, $fieldOffset);
114 if ($fld->type ==
'NUMBER') {
116 $sc = OCIColumnScale($this->_queryID, $fieldOffset);
117 if ($sc == 0) $fld->type =
'INT';
138 if(@OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode)) {
139 global $ADODB_ANSI_PADDING_OFF;
140 $this->_currentRow++;
142 if ($this->fetchMode & OCI_ASSOC) $this->_updatefields();
143 if (!empty($ADODB_ANSI_PADDING_OFF)) {
144 foreach($this->fields as $k => $v) {
145 if (is_string($v)) $this->fields[$k] = rtrim($v);
152 $this->_currentRow++;
161 $arr = $this->GetArray($nrows);
164 for ($i=1; $i < $offset; $i++)
165 if (!@OCIFetch($this->_queryID)) {
169 if (!@OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode)) {
173 if ($this->fetchMode & OCI_ASSOC) $this->_updatefields();
176 while (!$this->EOF && $nrows != $cnt) {
177 $results[$cnt++] = $this->fields;
187 if (ADODB_ASSOC_CASE == 2)
return;
190 $lowercase = (ADODB_ASSOC_CASE == 0);
192 foreach($this->fields as $k => $v) {
193 if (is_integer($k)) $arr[$k] = $v;
196 $arr[strtolower($k)] = $v;
198 $arr[strtoupper($k)] = $v;
201 $this->fields = $arr;
206 $ret = @OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode);
208 global $ADODB_ANSI_PADDING_OFF;
210 if ($this->fetchMode & OCI_ASSOC) $this->_updatefields();
211 if (!empty($ADODB_ANSI_PADDING_OFF)) {
212 foreach($this->fields as $k => $v) {
213 if (is_string($v)) $this->fields[$k] = rtrim($v);
_query($sql, $inputarr=false)
Prepare($sql, $cursor=false)
_query($sql, $inputarr=false)
Execute($sql, $inputarr=false)
Prepare($sql, $cursor=false)
ADORecordset_oci8po($queryID, $mode=false)
GetArrayLimit($nrows, $offset=-1)
_FetchField($fieldOffset=-1)