Замечания по выпуску


42.6 Информация о типах данных

42.6.1 Расширение типов данных

В этом разделе в таблице 5 показан список приоритетов типов данных. Обратите внимание:

  1. Для базы данных Unicode считаются эквивалентными следующие типы данных:
  2. В базе данных Unicode можно создать такие функции, у которых единственной разницей в записи будут только эквивалентные типы данных CHAR и GRAPHIC, например, foo(CHAR(8)) и foo(GRAPHIC(8)). Мы настоятельно рекомендуем не определять такие дублирующие функции, поскольку при перенастройке в следующий выпуск одну из них придется отбросить.

    Если такие дублирующие функции все же существуют, выбор из них при вызове выполняет двухпроходный алгоритм. На первом проходе для поиска совпадения используется тот же алгоритм, что и при разрешений функций в других базах данных (не Unicode). Если совпадение не обнаружено, будет выполнен второй проход с учетом следующих процедур расширения для строк CHAR и GRAPHIC:

    GRAPHIC-->CHAR-->VARGRAPHIC-->VARCHAR-->LONG VARGRAPHIC-->LONG VARCHAR-->
         -->DBCLOB-->CLOB
    

42.6.2 Преобразование типов данных

К списку с заголовком "The following casts involving distinct types are supported" (Поддерживаются следующие преобразования особых типов) добавлена следующая запись:

Далее приводятся изменения к таблице 6 "Supported Casts between Built-in Data Types" (Поддерживаемые преобразования между встроенными типами данных). (Приведены только измененные строки таблицы.)

Табл. 18. Поддерживаемые преобразования между встроенными типами данных

Конечный тип данных >
 
 
 
 
 
 
Исходный тип данных V
C
H
A
R
V
A
R
C
H
A
R
L
O
N
G
V
A
R
C
H
A
R
C
L
O
B
G
R
A
P
H
I
C
V
A
R
G
R
A
P
H
I
C
L
O
N
G
V
A
R
G
R
A
P
H
I
C
D
B
C
L
O
B
CHAR Д Д Д Д Д1 Д1 - -
VARCHAR Д Д Д Д Д1 Д1 - -
LONGVARCHAR Д Д Д Д - - Д1 Д1
CLOB Д Д Д Д - - - Д1
GRAPHIC Д1 Д1 - - Д Д Д Д
VARGRAPHIC Д1 Д1 - - Д Д Д Д
LONGVARGRAPHIC - - Д1 Д1 Д Д Д Д
DBCLOB - - - Д1 Д Д Д Д

1
Преобразование типов поддерживается только для баз данных Unicode.

42.6.3 Присваивания и сравнения

Присваивания и сравнения, включающие в себя символьные и графические данные, поддерживаются только тогда, когда одна из строк является литералом. Для разрешения функций и графические, и символьные литералы будут соответствовать и символьным, и графическим параметрам функций.

Далее приводятся изменения в Таблице 7 "Data Type Compatibility for Assignments and Comparisons" (Совместимость типов данных при присваивании и сравнении). Приведены только измененные строки таблицы и новое примечание 6 к этой таблице.

Операнды Двоичное целое Десятичное число Плавающее Символьная строка Графическая строка Дата Время Отметка времени Двоичная строка Пользователь- ский тип
Символьная строка Нет Нет Нет Да Да 6 1 1 1 Нет 3 2
Графическая строка Нет Нет Нет Да 6 Да Нет Нет Нет Нет 2

6
Поддерживается только для баз данных Unicode.

42.6.3.1 Присваивания строк

Storage Assignment (Выделение памяти)

Последний абзац этого подраздела изменен так:

Когда символьная строка присваивается столбцу фиксированной длины и длина строки меньше атрибута длины потребителя, эта строка справа дополняется необходимым числом пробелов (однобайтных, двухбайтных или UCS-22). Заполняющий символ - всегда пробел даже для столбцов, определенных с атрибутом FOR BIT DATA.

Retrieval Assignment

Третий абзац этого подраздела изменен так:

Когда символьная строка присваивается переменной фиксированной длины и длина строки меньше атрибута длины потребителя, строка дополняется справа необходимым числом пробелов (однобайтных, двухбайтных или UCS-22). Заполняющий символ - всегда пробел даже для строк, определенных с атрибутом FOR BIT DATA.

2
В UCS-2 определено несколько символов SPACE с разными свойствами. Для базы данных Unicode менеджер баз данных в качестве пробела UCS-2 всегда использует ASCII SPACE с кодом x'0020'. Для базы данных EUC для заполнения строк GRAPHIC используется IDEOGRAPHIC SPACE с кодом x'3000'.

Conversion Rules for String Assignments (Правила преобразования для присваивания строк)

В конец этого подраздела был добавлен следующий абзац:

Для баз данных Unicode символьные строки могут быть назначены графическому столбцу, а графические строки - символьному столбцу.

DBCS Considerations for Graphic String Assignments (Особенности DBCS для присваивания графических строк)

Первый абзац этого подраздела изменен следующим образом:

Присваивания графических строк обрабатываются аналогично присваиваниям символьных строк. Для баз данных не Unicode типы данных графических строк совместимы только с другими типами данных графических строк и никогда не совместимы с типами данных численных и символьных строк, а также с типами данных даты и времени. Для баз данных Unicode типы данных графических строк совместимы с типами данных символьных строк.

42.6.3.2 Сравнение строк

Conversion Rules for Comparison (Правила преобразования для сравнений)

Этот подраздел изменен так:

При сравнении двух строк, если это необходимо, одна из них сначала преобразуется в схему кодировки и кодовую страницу другой строки. Подробности смотрите в разделе "Rules for String Conversions" (Правила преобразования строк) главы 3 "Language Elements" (Элементы языка) справочника SQL Reference.

42.6.4 Правила для типов данных результатов

42.6.4.1 Символьные и графические строки в базе данных Unicode

Это новый подраздел, вставленный после подраздела "Graphic Strings" (Графические строки).

В базе данных Unicode символьные и графические строки совместимы.

Если один из операндов... А другой операнд... Тип данных результата будет...
GRAPHIC(x) CHAR(y) или GRAPHIC(y) GRAPHIC(z), где z = max(x,y)
VARGRAPHIC(x) CHAR(y) или VARCHAR(y) VARGRAPHIC(z), где z = max(x,y)
VARCHAR(x) GRAPHIC(y) или VARGRAPHIC VARGRAPHIC(z), где z = max(x,y)
LONG VARGRAPHIC CHAR(y) или VARCHAR(y) или LONG VARCHAR LONG VARGRAPHIC
LONG VARCHAR GRAPHIC(y) или VARGRAPHIC(y) LONG VARGRAPHIC
DBCLOB(x) CHAR(y) или VARCHAR(y) или CLOB(y) DBCLOB(z), где z = max(x,y)
DBCLOB(x) LONG VARCHAR DBCLOB(z), где z = max(x,16350)
CLOB(x) GRAPHIC(y) или VARGRAPHIC(y) DBCLOB(z), где z = max(x,y)
CLOB(x) LONG VARGRAPHIC DBCLOB(z), где z = max(x,16350)

42.6.5 Rules for String Conversions (Правила преобразования строк)

К следующему списку в этом разделе был добавлен третий пункт:

Для каждой пары кодовых страниц результат определяется последовательным применением следующих правил:

1
В базах данных не Unicode преобразование между разными схемами кодирования не поддерживается.

42.6.6 Expressions (Выражения)

Добавлено следующее:

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

42.6.6.1 With the Concatenation Operator (С операцией конкатенации)

В конец этого подраздела было добавлено следующее:

В базе данных Unicode конкатенация, включающая как операнды символьных строк, так и операнды графических строк, сперва будет преобразовывать символьные операнды в графические операнды. Обратите внимание на то, что в других базах данных (не Unicode) конкатенация не может включать и символьные, и графические операнды.

42.6.7 Predicates

К списку, начинающемуся с предложения "The following rules apply to all types of predicates", добавлено:


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]