Конспект лекций по дисциплине «Сетевые базы данных», страница 20

DECLARE

Str  my_tab.street%TYPE;

BEGIN

(список команд SQL и PL/SQL)

EXCEPTION

(обработчики исключений)

END;

6.6. Преобразование типов

В PL/SQL можно выполнять преобразования скалярных типов данных, принадлежащим разным семействам типов. В пределах одного семейства типы данных можно преобразовывать произвольно, за исключением ограничений, налагаемых на переменные. Например, переменную типа CHAR(10) нельзя преобразовать в переменную VARCHAR2(5), так как будет недостаточно места для хранения переменной. Из-за ограничение точности и масштаба нельзя преобразовать переменную типа NUMBER(3,2) в переменную типа NUMBER(3) и наоборот. При таких нарушениях компилятор не будет выдавать ошибки, но во время выполнения программы будет зафиксирована ошибка.

6.6.1. Явное преобразование типов

PL/SQL содержит встроенные функции, предназначенные для преобразования типов. В таблице 6.1 показаны енкоторые функции преобразования типов данных.

Таблица 6.1. Функции преобразования типов данных PL/SQL и SQL

Функция

Описание

Семейства типов, допустимых для преобразования

TO_CHAR

Преобразует аргумент к типу VARCHAR2 в зависимости от указанного формата (указание формата необязательно)

Числовые тиы, типы даты

TO_DATE

Преобразует аргумент к типу DATE в зависимости от указанного формата (указание формата необязательно)

Символьные типы

TO_NUMBER

Преобразует аргумент к типу NUMBER в зависимости от указанного формата (указание формата необязательно)

Символьные типы

В примере показано применение функции TO_CHAR для преобразования системной даты к символьному типу:

DECLARE

A varchar2(10);

BEGIN

A  :=  TO_CHAR (sysdate, ’dd.mm.yyyy’);

EXCEPTION

(обработчики исключений)

END;

6.6.2. Неявное преобразование типов

В PL/SQL выполняется автоматическое преобразование типов данных указанных ниже семейств, когда это возможно:

·  строк символов и чисел

·  строк символов и дат

В примере, приведенном ниже, выполняется неявное преобразование строки в дату:

DECLARE

D date;

BEGIN

D  :=  ’01.09.2009’;

EXCEPTION

(обработчики исключений)

END;

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

6.7. Порядок вычисления выражений

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

Приоритет операций:

1.  вычисления в круглых скобках ( )

2.  вычисления значений функций

3.  унарные операции not

4.  операции типа умножение *, /, mod, and

5.  операции типа сложение +, -, or, xor

6.  операции сравнения >, <, <=, >=, =, <>

Следует учесть, что в языке PL/SQL логические операции имеют более высокий приоритет, чем операции отношения. В связи с этим, в сложных логических выражениях обычно необходимо расставлять скобки. Если, например, b и с имеют тип INTEGER , то выражение

а = b and с < d