Subversion Repositories svnkaklik

Rev

Details | Last modification | View Log

Rev Author Line No. Line
36 kaklik 1
<?php
2
 
3
 
4
/*
5
V4.80 8 Mar 2006  (c) 2000-2006 John Lim (jlim@natsoft.com.my). 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
 
13
class 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
 
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) 
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
?>