source: sandbox/2.5.1-evolucao/phpgwapi/inc/adodb/drivers/adodb-pdo_oci.inc.php @ 8222

Revision 8222, 2.6 KB checked in by angelo, 11 years ago (diff)

Ticket #3491 - Compatibilizar Expresso com novas versoes do PHP

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2
3
4/*
5V5.18 3 Sep 2012  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights reserved.
6  Released under both BSD license and Lesser GPL library license.
7  Whenever there is any discrepancy between the two licenses,
8  the BSD license will take precedence.
9  Set tabs to 8.
10 
11*/
12
13class ADODB_pdo_oci extends ADODB_pdo_base {
14
15        var $concat_operator='||';
16        var $sysDate = "TRUNC(SYSDATE)";
17        var $sysTimeStamp = 'SYSDATE';
18        var $NLS_DATE_FORMAT = 'YYYY-MM-DD';  // To include time, use 'RRRR-MM-DD HH24:MI:SS'
19        var $random = "abs(mod(DBMS_RANDOM.RANDOM,10000001)/10000000)";
20        var $metaTablesSQL = "select table_name,table_type from cat where table_type in ('TABLE','VIEW')";
21        var $metaColumnsSQL = "select cname,coltype,width, SCALE, PRECISION, NULLS, DEFAULTVAL from col where tname='%s' order by colno";
22               
23        var $_initdate = true;
24        var $_hasdual = true;
25       
26        function _init($parentDriver)
27        {
28                $parentDriver->_bindInputArray = true;
29                $parentDriver->_nestedSQL = true;
30                if ($this->_initdate) {
31                        $parentDriver->Execute("ALTER SESSION SET NLS_DATE_FORMAT='".$this->NLS_DATE_FORMAT."'");
32                }
33        }
34       
35        function MetaTables($ttype=false,$showSchema=false,$mask=false)
36        {
37                if ($mask) {
38                        $save = $this->metaTablesSQL;
39                        $mask = $this->qstr(strtoupper($mask));
40                        $this->metaTablesSQL .= " AND table_name like $mask";
41                }
42                $ret = ADOConnection::MetaTables($ttype,$showSchema);
43               
44                if ($mask) {
45                        $this->metaTablesSQL = $save;
46                }
47                return $ret;
48        }
49       
50        function MetaColumns($table,$normalize=true)
51        {
52        global $ADODB_FETCH_MODE;
53       
54                $false = false;
55                $save = $ADODB_FETCH_MODE;
56                $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
57                if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);
58               
59                $rs = $this->Execute(sprintf($this->metaColumnsSQL,strtoupper($table)));
60               
61                if (isset($savem)) $this->SetFetchMode($savem);
62                $ADODB_FETCH_MODE = $save;
63                if (!$rs) {
64                        return $false;
65                }
66                $retarr = array();
67                while (!$rs->EOF) { //print_r($rs->fields);
68                        $fld = new ADOFieldObject();
69                        $fld->name = $rs->fields[0];
70                        $fld->type = $rs->fields[1];
71                        $fld->max_length = $rs->fields[2];
72                        $fld->scale = $rs->fields[3];
73                        if ($rs->fields[1] == 'NUMBER' && $rs->fields[3] == 0) {
74                                $fld->type ='INT';
75                        $fld->max_length = $rs->fields[4];
76                }       
77                        $fld->not_null = (strncmp($rs->fields[5], 'NOT',3) === 0);
78                        $fld->binary = (strpos($fld->type,'BLOB') !== false);
79                        $fld->default_value = $rs->fields[6];
80                       
81                        if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;     
82                        else $retarr[strtoupper($fld->name)] = $fld;
83                        $rs->MoveNext();
84                }
85                $rs->Close();
86                if (empty($retarr))
87                        return  $false;
88                else
89                        return $retarr;
90        }
91}
92
93?>
Note: See TracBrowser for help on using the repository browser.