Приложение B


ТИПЫ ДАННЫХ В SQL

Типы данных, распознаваемые с помощью ANSI, состоят из символов и различных типов чисел, которые могут классифицироваться как точные числа и приблизительные числа.

Точные числовые типы это числа с десятичной точкой или без десятичной точки. Приблизительные числовые типы это числа в показательной (экспоненциальной по основанию 10) записи.

Для всех прочих типов отличия слишком малы чтобы их как-то классифицировать.

Иногда типы данных используют аргумент, который называют размером аргумента, чей точный формат и значение меняется в зависимости от конкретного типа.

Значения по умолчанию обеспечены для всех типов, если размер аргумента отсутствует.

ТИПЫ ANSI

Ниже представлены типы данных ANSI (имена в круглых скобках - это синонимы):

TEXTТЕКСТ
CHAR (или CHARACTER) Строка текста в реализационно определенном формате. Размер аргумента здесь это единственное неотрицательное целое число, которое ссылается к максимальной длине строки. Значения этого типа должны быть заключены в одиночные кавычки, например, 'text'. Две рядом стоящие одинарные кавычки ('') внутри строки будут пониматься как одна одинарная кавычка (').

ПРИМЕЧАНИЕ:
Здесь и далее фраза Реализационно Определенный или Реализационно Зависимый указывает, что этот аргумент или формат зависит от конкретной программы в которой реализуются данные.

EXACT NUMERICТОЧНО ЧИСЛО
DEC (или DECIMAL) Десятичное число, то есть число, которое может иметь десятичную точку. Здесь аргумент размера имеет две части: точность и масштаб. Масштаб не может превышать точность. Сначала указывается точность, затем - разделительная запятая и далее - аргумент масштаба. Точность указывает, сколько значащих цифр имеет число. Максимальное десятичное число, составляющее число - реализационно определённое значение, равное или больше, чем этот номер. Масштаб указывает максимальное число цифр справа от десятичной точки. Масштаб = нулю делает поле эквивалентом целого числа.
NUMERICТакое же, как DECIMAL, за исключением того, что максимальное десятичное не может превышать аргумента точности.
INT (или INTEGER)Число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, то есть с масштабом, равным 0. Аргумент размера не используется (он автоматически устанавливается в реализационно-зависимое значение).
SMALLINTТакое же, как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может (или может не) быть меньшее чем INTEGER.
APPROXIMATE NUMERICПриблизительное число
FLOAT Число с плавающей запятой на базе 10 показательной функции. Аргумент размера состоит из одного числа, определяющего минимальную точность.
REALТакое же, как FLOAT, за исключением того, что никакой аргумент размера не используется. Точность установлена по умолчанию как реализационно зависимая.
DOUBLE PRECISION (или DOUBLE)Такое же, как REAL, за исключением того, что реализационно определяемая точность для DOUBLE PRECISION должна превышать реализационно определяемую точность REAL.

ЭКВИВАЛЕНТНЫЕ ТИПЫ ДАННЫХ В ДРУГИХ ЯЗЫКАХ

Когда используется вложение SQL в другие языки, значения, используемые и произведённые командами SQL, обычно сохраняются в переменных главного языка (см. Главу 25). Эти переменные должны иметь тип данных, совместимый со значениями SQL, которые они будут получать.

В дополнениях, которые не являются частью официального SQL-стандарта, ANSI обеспечивает поддержку при использовании вложения SQL в четыре языка: Паскаль, PL/I, КОБОЛ, и ФОРТРАН. Между прочим, он включает определение эквивалентов SQL для данных типов переменных, используемых в этих языках.

Эквиваленты типов данных четырёх языков, определенные ANSI:

PL/I

SQL ТИПЭКВИВАЛЕНТ PL/I
CHARCHAR
DECIMAL FIXED DECIMAL
INTEGERFIXED BINARY
FLOATFLOAT BINARY

КОБОЛ

SQL ТИПЭКВИВАЛЕНТ КОБОЛА
CHAR ()PIC X ()
INTEGERPIC S () USAGE COMPUTTATIONAL
NUMERICPIC S (< nines with embedded V >) DISPLAY SING LEADING SEPERATE

ПАСКАЛЬ

SQL ТИПЭКВИВАЛЕНТ ПАСКАЛЯ
INTEGERINTEGER
REALREAL
CHAR ()PACKED ARRAY [1..] OF CHAR

ФОРТРАН

SQL ТИПЭКВИВАЛЕНТ ФОРТРАНА
CHARCHAR
INTEGERINTEGER
REALREAL
DOUBLE PRECISIONDOUBLE PRECISION