• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/db/oraclesqlhelper.php
  • Класс: BitrixMainDBOracleSqlHelper
  • Вызов: OracleSqlHelper::getColumnTypeByField
public function getColumnTypeByField(ScalarField $field)
{
	if ($field instanceof ORMFieldsIntegerField)
	{
		return 'number(18)';
	}
	elseif ($field instanceof ORMFieldsFloatField)
	{
		$scale = $field->getScale();
		return 'number'.($scale !== null? "(*,".$scale.")": "");
	}
	elseif ($field instanceof ORMFieldsDatetimeField)
	{
		return 'date';
	}
	elseif ($field instanceof ORMFieldsDateField)
	{
		return 'date';
	}
	elseif ($field instanceof ORMFieldsTextField)
	{
		return 'clob';
	}
	elseif ($field instanceof ORMFieldsBooleanField)
	{
		$values = $field->getValues();

		if (preg_match('/^[0-9]+$/', $values[0]) && preg_match('/^[0-9]+$/', $values[1]))
		{
			return 'number(1)';
		}
		else
		{
			return 'varchar2('.max(mb_strlen($values[0]), mb_strlen($values[1])).' char)';
		}
	}
	elseif ($field instanceof ORMFieldsEnumField)
	{
		return 'varchar2('.max(array_map('strlen', $field->getValues())).' char)';
	}
	else
	{
		// string by default
		$defaultLength = false;
		foreach ($field->getValidators() as $validator)
		{
			if ($validator instanceof ORMFieldsValidatorsLengthValidator)
			{
				if ($defaultLength === false || $defaultLength > $validator->getMax())
				{
					$defaultLength = $validator->getMax();
				}
			}
		}
		return 'varchar2('.($defaultLength > 0? $defaultLength: 255).' char)';
	}
}