/** * Gets the column name in Oracle. * * @param ColumnInterface $column * @return string * * @throws Exception */ public function getColumnDefinition(ColumnInterface $column) { $type = $column->getType(); $size = $column->getSize(); switch ($type) { case Column::TYPE_INTEGER: $columnSql = 'INTEGER'; break; case Column::TYPE_DATE: $columnSql = 'DATE'; break; case Column::TYPE_VARCHAR: $columnSql = 'VARCHAR2(' . $size . ')'; break; case Column::TYPE_DECIMAL: $scale = $column->getScale(); $columnSql = 'NUMBER(' . $size . ',' . $scale . ')'; break; case Column::TYPE_DATETIME: $columnSql = 'TIMESTAMP'; break; case Column::TYPE_TIMESTAMP: $columnSql = 'TIMESTAMP'; break; case Column::TYPE_CHAR: $columnSql = 'CHAR(' . $size . ')'; break; case Column::TYPE_TEXT: $columnSql = 'TEXT'; break; case Column::TYPE_FLOAT: $scale = $column->getScale(); $columnSql = 'FLOAT(' . $size . ',' . $scale . ')'; break; case Column::TYPE_BOOLEAN: $columnSql = 'TINYINT(1)'; break; default: throw new Exception('Unrecognized Oracle data type at column ' . $column->getName()); } return $columnSql; }
/** * Gets the column name in MsSQL. * * @param mixed $column * * @return string */ public function getColumnDefinition(\Phalcon\Db\ColumnInterface $column) { $columnSql = ''; $type = $column->getType(); if (is_string($type)) { $columnSql .= $type; $type = $column->getTypeReference(); } switch ($type) { case Column::TYPE_INTEGER: if (empty($columnSql)) { $columnSql .= 'INT'; } // $columnSql .= '('.$column->getSize().')'; // if ($column->isUnsigned()) { // $columnSql .= ' UNSIGNED'; // } break; case Column::TYPE_DATE: if (empty($columnSql)) { $columnSql .= 'DATE'; } break; case Column::TYPE_VARCHAR: if (empty($columnSql)) { $columnSql .= 'NVARCHAR'; } $columnSql .= '(' . $column->getSize() . ')'; break; case Column::TYPE_DECIMAL: if (empty($columnSql)) { $columnSql .= 'DECIMAL'; } $columnSql .= '(' . $column->getSize() . ',' . $column->getScale() . ')'; // if ($column->isUnsigned()) { // $columnSql .= ' UNSIGNED'; // } break; case Column::TYPE_DATETIME: if (empty($columnSql)) { $columnSql .= 'DATETIME'; } break; case Column::TYPE_TIMESTAMP: if (empty($columnSql)) { $columnSql .= 'TIMESTAMP'; } break; case Column::TYPE_CHAR: if (empty($columnSql)) { $columnSql .= 'CHAR'; } $columnSql .= '(' . $column->getSize() . ')'; break; case Column::TYPE_TEXT: if (empty($columnSql)) { $columnSql .= 'NTEXT'; } break; case Column::TYPE_BOOLEAN: if (empty($columnSql)) { $columnSql .= 'BIT'; } break; case Column::TYPE_FLOAT: if (empty($columnSql)) { $columnSql .= 'FLOAT'; } $size = $column->getSize(); if ($size) { // $scale = $column->getScale(); // if ($scale) { // $columnSql .= '('.size.','.scale.')'; // } else { $columnSql .= '(' . size . ')'; // } } // if ($column->isUnsigned()) { // $columnSql .= ' UNSIGNED'; // } break; case Column::TYPE_DOUBLE: if (empty($columnSql)) { $columnSql .= 'NUMERIC'; } $size = $column->getSize(); if ($size) { $scale = $column->getScale(); $columnSql .= '(' . $size; if ($scale) { $columnSql .= ',' . $scale . ')'; } else { $columnSql .= ')'; } } // if ($column->isUnsigned()) { // $columnSql .= ' UNSIGNED'; // } break; case Column::TYPE_BIGINTEGER: if (empty($columnSql)) { $columnSql .= 'BIGINT'; } $size = $column->getSize(); if ($size) { $columnSql .= '(' . $size . ')'; } // if ($column->isUnsigned()) { // $columnSql .= ' UNSIGNED'; // } break; case Column::TYPE_TINYBLOB: if (empty($columnSql)) { $columnSql .= 'VARBINARY(255)'; } break; case Column::TYPE_BLOB: case Column::TYPE_MEDIUMBLOB: case Column::TYPE_LONGBLOB: if (empty($columnSql)) { $columnSql .= 'VARBINARY(MAX)'; } break; default: if (empty($columnSql)) { throw new Exception('Unrecognized MsSql data type at column ' . $column->getName()); } $typeValues = $column->getTypeValues(); if (!empty($typeValues)) { if (is_array($typeValues)) { $valueSql = ''; foreach ($typeValues as $value) { $valueSql .= '"' . addcslashes($value, '"') . '", '; } $columnSql .= '(' . substr(valueSql, 0, -2) . ')'; } else { $columnSql .= '("' . addcslashes($typeValues, '"') . '")'; } } break; } return $columnSql; }