Phalcon\Db\Dialect\Oracle::describeColumns PHP Method

describeColumns() public method

Generates SQL to describe a table.
public describeColumns ( string $table, string $schema = null ) : string
$table string
$schema string
return string
    public function describeColumns($table, $schema = null)
    {
        $table = $this->escape($table);
        $sql = 'SELECT TC.COLUMN_NAME, TC.DATA_TYPE, TC.DATA_LENGTH, TC.DATA_PRECISION, TC.DATA_SCALE, TC.NULLABLE, ' . 'C.CONSTRAINT_TYPE, TC.DATA_DEFAULT, CC.POSITION FROM ALL_TAB_COLUMNS TC LEFT JOIN ' . '(ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND ' . "CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P')) ON " . 'TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME WHERE TC.TABLE_NAME = %s %s ' . 'ORDER BY TC.COLUMN_ID';
        if (!empty($schema)) {
            $schema = $this->escapeSchema($schema);
            return sprintf($sql, Text::upper($table), 'AND TC.OWNER = ' . Text::upper($schema));
        }
        return sprintf($sql, Text::upper($table), '');
    }

Usage Example

Exemplo n.º 1
0
 public function testDescribeColumnsForSchemaWithDots()
 {
     $dialect = new Oracle();
     $sql = $dialect->describeColumns('table', 'database.name.with.dots');
     $expected = ['SELECT TC.COLUMN_NAME, TC.DATA_TYPE, TC.DATA_LENGTH, TC.DATA_PRECISION, TC.DATA_SCALE, TC.NULLABLE, ', 'C.CONSTRAINT_TYPE, TC.DATA_DEFAULT, CC.POSITION FROM ALL_TAB_COLUMNS TC LEFT JOIN (ALL_CONS_COLUMNS CC ', 'JOIN ALL_CONSTRAINTS C ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME ', "AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P')) ON TC.TABLE_NAME = CC.TABLE_NAME AND ", "TC.COLUMN_NAME = CC.COLUMN_NAME WHERE TC.TABLE_NAME = 'TABLE' AND ", "TC.OWNER = 'DATABASE.NAME.WITH.DOTS' ORDER BY TC.COLUMN_ID"];
     $this->assertEquals(join('', $expected), $sql);
 }