Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Типы MONEY и SMALLMONEY

Типы MONEY и SMALLMONEYВ Microsoft SQL Server 2008 для точных чисел существует больше типов, чем в Oracle или DB2. В дополнение к INT, BIGINT, SMALLINT и TINYINT эта СУБД предлагает типы MONEY и SMALLMONEY. Спрашивается, зачем было вводить специальные типы для денежных величин? Уназаметку Одной из причин является единообразие. Практически все бухгалтеры и финансисты знают, сколько проблем возникает из-за так называемых ошибок округления. Для примера предположим, что один столбец определен как numeric (12,2), а другой как numeric(14,4) . При работе с большими суммами расхождение может достигать сотен или даже тысяч долларов. С другой стороны, существование разных типов данных для практически одинаковых сущностей может вызвать путаницу, поэтому у компании Oracle были все основания для ввода всего одного типа для всех числовых данных. Сами решайте, какой из подходов имеет больше прав на существование. Литералы для точных чисел формируются из строки цифр, иногда предваренной знаком “плюс” или “минус”, с необязательной дробной частью, отделенной запятой: 123 Некорректное использование типов данных свойственно начинающим программистам и может вылиться в серьезные проблемы. К примеру, если выделить для денежных данных тип float или numeric(12,1) , ошибки округления неизбежны. (Бухгалтеры вас за это могут даже предать анафеме.) Недостаточная точность в столбце первичного ключа (например, ordhdr_id_n number(5) в таблице заголовков заказов) не позволит после определенного порога вводить новые строки (в данном примере после 99999-го по счету заказа). Ситуацию в последнем случае легко исправить путем коррекции точности числового столбца (более подробно об этом читайте в следующей главе). И в этом состоит одно из преимуществ реляционных баз данных перед старыми системами хранения информации. Естественно, на выявление источника ошибки уйдет некоторое время, а если требования к доступности данных высоки, пользователей вряд ли обрадует такая задержка.