00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 require_once ADODB_DIR."/drivers/adodb-sybase.inc.php";
00015
00016 class ADODB_sybase_ase extends ADODB_sybase {
00017 var $databaseType = "sybase_ase";
00018
00019 var $metaTablesSQL="SELECT sysobjects.name FROM sysobjects, sysusers WHERE sysobjects.type='U' AND sysobjects.uid = sysusers.uid";
00020 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";
00021 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";
00022
00023 function ADODB_sybase_ase()
00024 {
00025 }
00026
00027
00028 function &MetaTables($ttype=false,$showSchema=false,$mask=false)
00029 {
00030 $false = false;
00031 if ($this->metaTablesSQL) {
00032
00033
00034 if ($ttype == 'VIEWS'){
00035 $sql = str_replace('U', 'V', $this->metaTablesSQL);
00036 }elseif (false === $ttype){
00037 $sql = str_replace('U',"U' OR type='V", $this->metaTablesSQL);
00038 }else{
00039 $sql = $this->metaTablesSQL;
00040 }
00041 $rs = $this->Execute($sql);
00042
00043 if ($rs === false || !method_exists($rs, 'GetArray')){
00044 return $false;
00045 }
00046 $arr =& $rs->GetArray();
00047
00048 $arr2 = array();
00049 foreach($arr as $key=>$value){
00050 $arr2[] = trim($value['name']);
00051 }
00052 return $arr2;
00053 }
00054 return $false;
00055 }
00056
00057 function MetaDatabases()
00058 {
00059 $arr = array();
00060 if ($this->metaDatabasesSQL!='') {
00061 $rs = $this->Execute($this->metaDatabasesSQL);
00062 if ($rs && !$rs->EOF){
00063 while (!$rs->EOF){
00064 $arr[] = $rs->Fields('name');
00065 $rs->MoveNext();
00066 }
00067 return $arr;
00068 }
00069 }
00070 return false;
00071 }
00072
00073
00074 function &MetaColumns($table,$upper=false)
00075 {
00076 $false = false;
00077 if (!empty($this->metaColumnsSQL)) {
00078
00079 $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table));
00080 if ($rs === false) return $false;
00081
00082 $retarr = array();
00083 while (!$rs->EOF) {
00084 $fld =& new ADOFieldObject();
00085 $fld->name = $rs->Fields('field_name');
00086 $fld->type = $rs->Fields('type');
00087 $fld->max_length = $rs->Fields('width');
00088 $retarr[strtoupper($fld->name)] = $fld;
00089 $rs->MoveNext();
00090 }
00091 $rs->Close();
00092 return $retarr;
00093 }
00094 return $false;
00095 }
00096
00097 function getProcedureList($schema)
00098 {
00099 return false;
00100 }
00101
00102 function ErrorMsg()
00103 {
00104 if (!function_exists('sybase_connect')){
00105 return 'Your PHP doesn\'t contain the Sybase connection module!';
00106 }
00107 return parent::ErrorMsg();
00108 }
00109 }
00110
00111 class adorecordset_sybase_ase extends ADORecordset_sybase {
00112 var $databaseType = "sybase_ase";
00113 function ADORecordset_sybase_ase($id,$mode=false)
00114 {
00115 $this->ADORecordSet_sybase($id,$mode);
00116 }
00117
00118 }
00119 ?>