Реферат Курсовая Конспект
В начало - раздел Программирование, БАЗИСНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА PL/SQL 5.3 Динамическое Объявление Т...
|
5.3 Динамическое объявление типа переменных
Во многих случаях для работы с данными, хранимыми в таблицах базы данных, используются переменные PL/SQL. При этом переменной, работающей с некоторым столбцом, следует присваивать тип, соответствующий типу столбца. Например, столбец fam таблицы student имеет тип VARCHAR2(20). С учетом этого можно объявить переменную следующим образом:
DECLARE
v_fam VARCHAR2(20);
Посмотрим, что произойдет, если описание столбца fam изменится. Предположим, что таблица модифицирована и столбец fam имеет теперь тип VARCHAR2(25). Текст программы PL/SQL, в которой используется этот столбец, должен быть изменен:
DECLARE
v_fam VARCHAR2(25);
Если программа PL/SQL велика, этот процесс может занять много времени, и, кроме того, существует большая вероятность внесения ошибки. В этом случае вместо жесткого задания типа переменной можно воспользоваться атрибутом %TYPE. Он добавляется к ссылке на столбец таблицы или к другой переменной и возвращает ее тип. Например:
DECLARE
v_fam student.fam%TYPE;
При использовании %TYPE переменная v_fam будет иметь тот тип, который присвоен столбцу fam таблицы student. Тип определяется всякий раз, когда данный блок выполняется для анонимных и именованных блоков и когда компилируются хранимые объекты (процедуры, функции и т.д.). %TYPE может быть также использован с переменными PL/SQL, объявленными ранее.
Пример:
DECLARE
v_Room classes.room%TYPE; -- NUMBER (5)
v_Room2 v_Room%TYPE; -- NUMBER (5)
v_Temp NUMBER(7,3) NOT NULL := 12.3;
v_Temp2 v_Temp%TYPE; -- NUMBER (7,3)
Если атрибут %TYPE применяется для переменной (столбца), которая (который) содержит ограничение NOT NULL (например, classes. room и v_Temp), то возвращаемый тип не имеет этого ограничения. Приведенный выше блок вполне корректен, хотя переменные v_Room, v_Room2 и v_Temp2 не инициализированы. Дело в том, что эти переменные могут содержать NULL-значения.
Для объявления записи PL/SQL применяются типы данных, соответствующие строке таблицы базы данных. Для этих целей PL/SQL предоставляет оператор %ROWTYPE. Аналогично %TYPE, %ROWTYPE возвращает тип данных на основе определения таблицы. Например, такое объявление, как
DECLARE
v_RoomRecord rooms%ROWTYPE;
определяет запись, поля которой соответствуют столбцам таблицы rooms. В частности, v_RoomRecord будет выглядеть следующим образом:
(room_id NUMBER(5),
building VARCHAR2(15),
room_number NUMBER(4),
description VARCHAR2(50))
Как и в случае %TYPE, сюда не включается ограничение NOT NULL, определенное для столбца. Однако длина столбцов VARCHAR2 и CHAR, a также точность и масштаб для столбцов NUMBER учитываются.
Если определение таблицы изменяется, то %ROWTYPE изменяется вместе с ним. Подобно %TYPE, %ROWTYPE определяется всякий раз, когда анонимный блок передается среде выполнения PL/SQL, и всякий раз, когда компилируется хранимый объект.
– Конец работы –
Эта тема принадлежит разделу:
ВВЕДЕНИЕ... БАЗИСНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА PL SQL... ТИПЫ PL SQL...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: В начало
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов