5 @version v5.20.19 13-Dec-2020
6 @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
7 @copyright (c) 2014 Damien Regad, Mark Newnham and the ADOdb community
8 Released under both BSD license and Lesser GPL library license.
9 Whenever there is any discrepancy between the two licenses,
10 the BSD license will take precedence.
15 class ADODB_pdo_oci extends ADODB_pdo_base {
17 var $concat_operator='||';
18 var $sysDate = "TRUNC(SYSDATE)";
19 var $sysTimeStamp = 'SYSDATE';
20 var $NLS_DATE_FORMAT = 'YYYY-MM-DD'; // To include time, use 'RRRR-MM-DD HH24:MI:SS'
21 var $random = "abs(mod(DBMS_RANDOM.RANDOM,10000001)/10000000)";
22 var $metaTablesSQL = "select table_name,table_type from cat where table_type in ('TABLE','VIEW')";
23 var $metaColumnsSQL = "select cname,coltype,width, SCALE, PRECISION, NULLS, DEFAULTVAL from col where tname='%s' order by colno";
25 var $_initdate = true;
28 function _init($parentDriver)
30 $parentDriver->_bindInputArray = true;
31 $parentDriver->_nestedSQL = true;
32 if ($this->_initdate) {
33 $parentDriver->Execute("ALTER SESSION SET NLS_DATE_FORMAT='".$this->NLS_DATE_FORMAT."'");
37 function MetaTables($ttype=false,$showSchema=false,$mask=false)
40 $save = $this->metaTablesSQL;
41 $mask = $this->qstr(strtoupper($mask));
42 $this->metaTablesSQL .= " AND table_name like $mask";
44 $ret = ADOConnection::MetaTables($ttype,$showSchema);
47 $this->metaTablesSQL = $save;
52 function MetaColumns($table,$normalize=true)
54 global $ADODB_FETCH_MODE;
57 $save = $ADODB_FETCH_MODE;
58 $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
59 if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);
61 $rs = $this->Execute(sprintf($this->metaColumnsSQL,strtoupper($table)));
63 if (isset($savem)) $this->SetFetchMode($savem);
64 $ADODB_FETCH_MODE = $save;
69 while (!$rs->EOF) { //print_r($rs->fields);
70 $fld = new ADOFieldObject();
71 $fld->name = $rs->fields[0];
72 $fld->type = $rs->fields[1];
73 $fld->max_length = $rs->fields[2];
74 $fld->scale = $rs->fields[3];
75 if ($rs->fields[1] == 'NUMBER' && $rs->fields[3] == 0) {
77 $fld->max_length = $rs->fields[4];
79 $fld->not_null = (strncmp($rs->fields[5], 'NOT',3) === 0);
80 $fld->binary = (strpos($fld->type,'BLOB') !== false);
81 $fld->default_value = $rs->fields[6];
83 if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;
84 else $retarr[strtoupper($fld->name)] = $fld;
95 * @param bool $auto_commit
98 function SetAutoCommit($auto_commit)
100 $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT, $auto_commit);