1 | <?php
|
---|
2 | /*
|
---|
3 | V4.94 23 Jan 2007 (c) 2000-2007 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.
|
---|
7 |
|
---|
8 | Set tabs to 4.
|
---|
9 |
|
---|
10 | Contributed by Interakt Online. Thx Cristian MARIN cristic#interaktonline.com
|
---|
11 | */
|
---|
12 |
|
---|
13 |
|
---|
14 | require_once ADODB_DIR."/drivers/adodb-sybase.inc.php";
|
---|
15 |
|
---|
16 | class ADODB_sybase_ase extends ADODB_sybase {
|
---|
17 | var $databaseType = "sybase_ase";
|
---|
18 |
|
---|
19 | var $metaTablesSQL="SELECT sysobjects.name FROM sysobjects, sysusers WHERE sysobjects.type='U' AND sysobjects.uid = sysusers.uid";
|
---|
20 | var $metaColumnsSQL = "SELECT syscolumns.name AS field_name, systypes.name AS type, systypes.length AS width FROM sysobjects, syscolumns, systypes WHERE sysobjects.name='%s' AND syscolumns.id = sysobjects.id AND systypes.type=syscolumns.type";
|
---|
21 | var $metaDatabasesSQL ="SELECT a.name FROM master.dbo.sysdatabases a, master.dbo.syslogins b WHERE a.suid = b.suid and a.name like '%' and a.name != 'tempdb' and a.status3 != 256 order by 1";
|
---|
22 |
|
---|
23 | function ADODB_sybase_ase()
|
---|
24 | {
|
---|
25 | }
|
---|
26 |
|
---|
27 | // split the Views, Tables and procedures.
|
---|
28 | function &MetaTables($ttype=false,$showSchema=false,$mask=false)
|
---|
29 | {
|
---|
30 | $false = false;
|
---|
31 | if ($this->metaTablesSQL) {
|
---|
32 | // complicated state saving by the need for backward compat
|
---|
33 |
|
---|
34 | if ($ttype == 'VIEWS'){
|
---|
35 | $sql = str_replace('U', 'V', $this->metaTablesSQL);
|
---|
36 | }elseif (false === $ttype){
|
---|
37 | $sql = str_replace('U',"U' OR type='V", $this->metaTablesSQL);
|
---|
38 | }else{ // TABLES OR ANY OTHER
|
---|
39 | $sql = $this->metaTablesSQL;
|
---|
40 | }
|
---|
41 | $rs = $this->Execute($sql);
|
---|
42 |
|
---|
43 | if ($rs === false || !method_exists($rs, 'GetArray')){
|
---|
44 | return $false;
|
---|
45 | }
|
---|
46 | $arr =& $rs->GetArray();
|
---|
47 |
|
---|
48 | $arr2 = array();
|
---|
49 | foreach($arr as $key=>$value){
|
---|
50 | $arr2[] = trim($value['name']);
|
---|
51 | }
|
---|
52 | return $arr2;
|
---|
53 | }
|
---|
54 | return $false;
|
---|
55 | }
|
---|
56 |
|
---|
57 | function MetaDatabases()
|
---|
58 | {
|
---|
59 | $arr = array();
|
---|
60 | if ($this->metaDatabasesSQL!='') {
|
---|
61 | $rs = $this->Execute($this->metaDatabasesSQL);
|
---|
62 | if ($rs && !$rs->EOF){
|
---|
63 | while (!$rs->EOF){
|
---|
64 | $arr[] = $rs->Fields('name');
|
---|
65 | $rs->MoveNext();
|
---|
66 | }
|
---|
67 | return $arr;
|
---|
68 | }
|
---|
69 | }
|
---|
70 | return false;
|
---|
71 | }
|
---|
72 |
|
---|
73 | // fix a bug which prevent the metaColumns query to be executed for Sybase ASE
|
---|
74 | function &MetaColumns($table,$upper=false)
|
---|
75 | {
|
---|
76 | $false = false;
|
---|
77 | if (!empty($this->metaColumnsSQL)) {
|
---|
78 |
|
---|
79 | $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table));
|
---|
80 | if ($rs === false) return $false;
|
---|
81 |
|
---|
82 | $retarr = array();
|
---|
83 | while (!$rs->EOF) {
|
---|
84 | $fld =& new ADOFieldObject();
|
---|
85 | $fld->name = $rs->Fields('field_name');
|
---|
86 | $fld->type = $rs->Fields('type');
|
---|
87 | $fld->max_length = $rs->Fields('width');
|
---|
88 | $retarr[strtoupper($fld->name)] = $fld;
|
---|
89 | $rs->MoveNext();
|
---|
90 | }
|
---|
91 | $rs->Close();
|
---|
92 | return $retarr;
|
---|
93 | }
|
---|
94 | return $false;
|
---|
95 | }
|
---|
96 |
|
---|
97 | function getProcedureList($schema)
|
---|
98 | {
|
---|
99 | return false;
|
---|
100 | }
|
---|
101 |
|
---|
102 | function ErrorMsg()
|
---|
103 | {
|
---|
104 | if (!function_exists('sybase_connect')){
|
---|
105 | return 'Your PHP doesn\'t contain the Sybase connection module!';
|
---|
106 | }
|
---|
107 | return parent::ErrorMsg();
|
---|
108 | }
|
---|
109 | }
|
---|
110 |
|
---|
111 | class adorecordset_sybase_ase extends ADORecordset_sybase {
|
---|
112 | var $databaseType = "sybase_ase";
|
---|
113 | function ADORecordset_sybase_ase($id,$mode=false)
|
---|
114 | {
|
---|
115 | $this->ADORecordSet_sybase($id,$mode);
|
---|
116 | }
|
---|
117 |
|
---|
118 | }
|
---|
119 | ?> |
---|