Source for file oci.dbtools.php

Documentation is available at oci.dbtools.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db_driver
  5. @author     Gwendal Jouannic
  6. @contributor
  7. @copyright  2008 Gwendal Jouannic
  8. @link      http://www.jelix.org
  9. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11.  
  12.  
  13. class ociDbTools extends jDbTools {
  14.     
  15.     /**
  16.     * retourne la liste des tables
  17.     * @return   array    $tab[] = $nomDeTable
  18.     */
  19.     function _getTableList (){
  20.         $results array ();
  21.  
  22.         $rs $this->_connector->query ('SELECT TABLE_NAME FROM USER_TABLES');
  23.  
  24.         while ($line $rs->fetch ()){
  25.             $results[$line->table_name;
  26.         }
  27.  
  28.         return $results;
  29.     }
  30.  
  31.     /**
  32.     * récupère la liste des champs pour une base donnée.
  33.     * @return   array    $tab[NomDuChamp] = obj avec prop (tye, length, lengthVar, notnull)
  34.     */
  35.     function _getFieldList ($tableName){
  36.         $results array ();
  37.         
  38.         $query 'SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE, DATA_DEFAULT,  
  39.                         (SELECT CONSTRAINT_TYPE 
  40.                          FROM USER_CONSTRAINTS UC, USER_CONS_COLUMNS UCC 
  41.                          WHERE UCC.TABLE_NAME = UTC.TABLE_NAME
  42.                             AND UC.TABLE_NAME = UTC.TABLE_NAME
  43.                             AND UCC.COLUMN_NAME = UTC.COLUMN_NAME
  44.                             AND UC.CONSTRAINT_NAME = UCC.CONSTRAINT_NAME
  45.                             AND UC.CONSTRAINT_TYPE = \'P\') AS CONSTRAINT_TYPE,
  46.                          (SELECT \'Y\' FROM USER_SEQUENCES US
  47.                          WHERE US.SEQUENCE_NAME = concat(\''.$this->_getAISequenceName($tableName,'\', UTC.COLUMN_NAME').')) AS IS_AUTOINCREMENT   
  48.                     FROM USER_TAB_COLUMNS UTC 
  49.                     WHERE UTC.TABLE_NAME = \''.strtoupper($tableName).'\'';
  50.  
  51.         $rs $this->_connector->query ($query);
  52.  
  53.         while ($line $rs->fetch ()){
  54.             
  55.             $field new jDbFieldProperties();
  56.  
  57.             $field->name strtolower($line->column_name);
  58.             $field->type strtolower($line->data_type);
  59.             
  60.             if ($line->data_type == 'VARCHAR2'){
  61.                 $field->length intval($line->data_length);
  62.             }    
  63.                       
  64.             $field->notNull ($line->nullable == 'N');
  65.             $field->primary ($line->constraint_type == 'P');
  66.             
  67.             /**
  68.              * A chaque champ auto increment correspond une sequence
  69.              */
  70.             if ($line->is_autoincrement == 'Y'){
  71.                 $field->autoIncrement  true;
  72.                 $field->sequence $this->_getAISequenceName($tableName$field->name);
  73.             }
  74.             
  75.             if ($line->data_default !== null || !($line->data_default === null && $field->notNull)){
  76.                 $field->hasDefault true;
  77.                 $field->default =  $line->data_default;   
  78.             }
  79.             
  80.             $results[$field->name$field;
  81.         }
  82.         return $results;
  83.     }
  84.  
  85.     /**
  86.     * récupère le nom de séquence correspondant à un champ auto_increment
  87.     * @return   string 
  88.     */
  89.     function _getAISequenceName($tbName$clName){
  90.         return preg_replace(array('/\*tbName\*/''/\*clName\*/')array(strtoupper($tbName)strtoupper($clName))$this->_connector->profil['sequence_AI_pattern']);
  91.     }
  92. }
  93. ?>

Documentation generated on Wed, 07 Sep 2011 13:48:24 +0200 by phpDocumentor 1.4.3