Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
end; { основная программа

Приложение А. Ответы к у11ражнениям

if city='London· then comm : = comm - .02 else comm : = comm + .02;

end;

{Для ситуации "если не commnull", begin и end указаны для ясности.

write ('Текущий город для продавца

·, snum,

city, ·

Желаете изменить значение?

(Y/N)');

 

Замечание: Для продавца, которому в данный момент не назначен город, комиссион­

ные назначаются в зависимости от того, проживает он в Лондоне или нет.

read ( response);

{ Переменная response содержит значение независимо от того, имеет ли переменная citynull значение "истина" или "ложь". }

end; { else not citynull } if response = ·у· then

begin

write ('Введите новое значение для city: · );

read (newcity);

if not commnull then

{ Эта операция может быть выполнена только для значений, отличных от NULL }

case newcity of: begin

'Barcelona': comm: = comm+.01, 'San Jose':comm: = comm-.01

end; { case and if not commnull} ЕХЕС SQL UPDATE Salespeople

SЕТ city=:newcity, comm = : comm:i_com WHERE CURRENT OF Salesperson;

{ Переменная-индикатор comm принимает NULL-значение в нужной ситуации}

епd; { если response = ·у·, если respoпse<>'Y',

то никаких изменений выполнять не требуется.}

ЕХЕС SQL FЕТСН Salesperson

INTO (:sпum,: sname, :с ity:i_cit, : comm: i_com);

{ Перейти к следующей строке }

end; { пока SQLCODE = О } ЕХЕС SQL CLOSE CURSOR Salesperson;

}

317

в

Типы данных SQL

Приложение В. Типы данных SQL

Типы данных, признаваемые ANSI, представлены символьным типом (CHAR) и

несколькими типами числовых значений, которые можно разбить на две категории: точные числовые значения и приближенные числовые значения. Точные числовые значения содержат цифры с десятичной точкой или без нее в традиционном представ­ лении числовых значений. Приближенные числовые значения представлены в экспо­ ненциальной форме (по основанию 1О). Другие отличия между этими двумя

числовыми типами менее существенны.

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

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

TunыANSI

Далее представлены типы данных ANSI (название в скобках является синонимом).

ТЕКСТ (ТЕХТ)

Тип данных

CHAR (CHARACTER)

Описание

Строка текста в формате, определенном разработчиком. Для

этого типа аргумент размера - целое неотрицательное число,

задающее максимальную длину строки. Значения этого типа

можно заключить в одиночные кавычки, например, 'текст'. Две

следующие друг за другом одиночные кавычки ("), расположен­

ные внутри строки, задают один символ одиночной кавычки.

ТОЧНО ЧИСЛОВЫЕ (ЕХАСТ NUMERJC)

Тип данных

Описание

DEC (DECIMAL) Десятичное число, т.е. число, которое может иметь в своем представлении десятичную точку. Соответственно, аргумент размера имеет две части: точность и масштаб. Масштаб не мо­ жет превышать точность. Точность указывается на первом месте, за ней следует запятая, отделяющая аргумент масштаба. Точность показывает количество значащих десятичных разря­ дов. Максимальное количество разрядов для числа зависит от конкретного способа реализации, равно этому числу или пре-

320

 

TunыANSI

 

 

 

вышает его. Масштаб определяет максимальное количество

 

разрядов справа от десятичной точки. В том случае, когда мас­

 

штаб равен нулю, поле эквивалентно типу "целый"

 

(INTEGER).

NUMERIC

Совпадает с DECIMAL, за исключением того, что макси­

 

мальное количество разрядов не может превышать аргумента

 

точности.

INT (INTEGER)

Число без явно представленной десятичной точки. Этот тип эк­

 

вивалентен типу DECIMAL, не имеющему разрядов справа от

 

десятичной точки, т.е. с масштабом, равным О. Аргумент разме­

 

ра не используется (он назначается автоматически в зависимо­

 

сти от конкретного способа реализации).

SMALLINT

Совпадает с INTEGER, за исключением того, что в зависимости

 

от конкретного способа реализации, размер, принятый по умол­

 

чанию для этого типа, может быть (или не быть) меньше, чем

 

для типа INTEGER.

ПРИБЛИЖЕННЫЕ ЧИСЛОВЫЕ (APPROXIMATE NUMERIC)

Тип данных

FLOAT

REAL

DOUBLE PRECISION (или DOUBLE)

Описание

Число с плавающей точкой, представленное в экспоненциаль­

ной форме по основанию 1О. Аргумент размера содержит един­

ственное число, задающее минимальную точность.

Совпадает с FLOAT, за исключением того, что аргумент разме­ ра не используется. Точность устанавливается по умолчанию в зависимости от конкретного способа реализации.

Совпадает с REAL, за исключением того, что точность кою,-рет­ ной реализации для DOUBLE PRECISION, может превышать точность конкретной реализации для REAL.

321

Приложение В. Типы даниых SQL

Эквивалентные типы данных в других

языках

При вк.1ючении SQL в другие языки значения, используемые в командах SQL и получаемые в результате выполнения команд SQL, обычно хранятся как перемен­ ные включающего языка (см. главу 25). Эти переменные должны быть совместимы по типам данных со значениями SQL, которые они содержат. В приложениях, не яв­ ляющихся частью официального стандарта SQL, ANSI предоставляет для приме­

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

PASCAL, PL/I, COBOL, FORTRAN. Одна из возникающих здесь проблем - необ­

ходимость определить эквивалентность типов данных для переменных, используе­

мых в этих языках.

Далее представлены эквиваленты для четырех, определенных ANSI, языков.

PVI

Тип в SQL

Эквивалент в PL/I

CHAR

CHAR

DECIMAL

FIXED DECIМAL

INTEGER

FIXED BINARY

FLOAT

FLOAT BINARY

COBOL

Тип в SQL

Эквивалент в COBOL

CHAR(<целое>)

PIC Х(<целое>)

INTEGER

PIC S(<девятки>) USAGE COMPUTATIONAL

NUMERIC

PIC S(<девяткu с включением символа V>) DISPLAY

 

SIGN LEADING SEPARATE

PASCAL

Тип в SQL

Эквивалент в PASCAL

INTEGER

INTEGER

REAL

REAL

CHAR(<длина>)

PACKED ARRAY [1 ..<длина>] OF CHAR

322

Источник: https://studfile.net/preview/16418473/