Введение в стандарты языка баз данных SQL



         

Скалярные выражения - часть 2


Пояснения: Спецификация параметра идентифицирует параметр или параметр и индикаторный параметр в модуле (вернее, в процедуре модуля). Спецификация динамического параметра идентифицирует параметр динамически подготовленного оператора. Спецификация переменной идентифицирует переменную включающего языка или такую переменную и индикаторную переменную. Спецификация цели определяет параметр или переменную, которым может быть присвоено значение. Отрицательное значение индикаторных параметра или переменной в спецификации параметра или переменной соответственно означает, что параметр или переменная содержат неопределенное значение. Значение CURRENT_USER есть значение текущего идентификатора авторизации; SESSION_USER - значение идентификатора авторизации SQL-сессии; SYSTEM_USER - определяемая в реализации строка, представляющая пользователя операционной системы, который выполнил оператор SQL, в результате которого было вычислено значение SYSTEM_USER.

Спецификация явного преобразования типа или домена

В SQL/89 существуют только неявные преобразования типов (например, FLOAT к DOUBLE). Конечно, это не всегда удобно, недостаточно гибко и иногда чревато ошибками. В SQL/92 существует специальная конструкция CAST, с помощью которой можно явно преобразовывать типы в пределах допускаемых преобразований. Синтаксис конструкции следующий:

<cast specification> ::= CAST <left paren> <cast operand> AS <cast target> <right paren> <cast operand> ::= <value expression> |NULL <cast target> ::= <domain name> |<data type>

Пояснения. Примем следующие обозначения типов данных:

EN - ExactNumeric;
AN - ApproximateNumeric;
C - Character (Fixed- orVariable-length);
FC - Fixed-lengthCharacter;
VC - Variable-lengthCharacter;
B - BitString (Fixed- orVariable-length);
FB - Fixed-lengthBitString;
VB - Variable-lengthBitString;
D - Date;
T - Time;
TS - Timestamp;
YM - Year-MonthInterval;
DT - Day-TimeInterval.

Пусть TD - тип данных, к которому производится преобразование, а SD - тип данных операнда. Тогда допустимы следующие комбинации ("да" означает безусловную допустимость, "нет"- безусловную недопустимость и "?" - допустимость с оговорками):

SDTD         
 ENANVCFCVBFBDTTSYMDT
ENДаДаДаДаНетНетНетНетНет??
ANДа ДаДаДаНетНетНетНетНетНетНет
CДаДа??ДаДаДаДаДаДаДа
BНетНетДаДаДаДаНетНетНетНетНет
DНетНетДаДаНетНетДаНетДаНетНет
TНетНетДаДаНетНетНетДаДаНетНет
TSНетНетДаДаНетНетДаДаДаНетНет
YM?НетДаДаНетНетНетНетНетДаНет
DT?НетДаДаНетНетНетНетНетНетДа
<


Содержание  Назад  Вперед