рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

В начало

В начало - раздел Программирование, БАЗИСНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА 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... ТИПЫ PL SQL...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: В начало

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Последовательное управление
1. ВВЕДЕНИЕ   PL/SQL — это собственный язык Oracle, предназначенный для разработки приложений баз данных. В дополнение ко всем SQL-операциям

В начало
  2. БАЗИСНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА PL/SQL   Набор символов: программа PL/SQL представляет собой строки текста, испо

Семейство числовых типов
NUMBER- с помощью данного типа можно хранить числа: целые и с плавающей точкой. Он аналогичен типу NUMBER, применяемому в базах данных. Синтаксис: NUMBER (P,S);

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

Семейство типов RAW
RAW - используется для хранения двоичных данных фиксированной длины. Синтаксис: RAW(L) , где L — длина переменной в байтах. Тип RAW. В отличие от символьны

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

В начало
3.2 Составные типы В переменной, имеющей составной тип, находится одна или несколько скалярных переменных (называемых также атрибутами). Для применения со

В начало
  3.3 Ссылочные типы Ссылочный тип PL/SQL — это то же самое, что и указатель в С. Переменная, объявленная как ссылочная, во

В начало
3.4 Типы LOB Используются для хранения больших объектов. Большой объект (large object) может быть либо двоичным, либо символьным значением размером

В начало
3.5 Объектные типы Объектный тип является составным типом, который имеет внутри себя атрибуты (переменные других типов) и методы (подпрограммы). Информаци

В начало
  3.6. Преобразование типов данных PL/SQL может выполнять преобразования между различными семействами скалярных типов данных. В пределах одн

Явное преобразование типов данных
Встроенные функции преобразования, доступные в SQL, доступны и в PL/SQL. Краткое описание этих функций приведено в таблице 6. При необходимости их можно применять для явного преобразования типов да

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

В начало
4. ПРОГРАММНЫЕ КОНСТРУКЦИИ PL/SQL В PL/SQL имеется множество различных программных конструкций, начиная с модулей разных видов и заканчивая логическими ко

В начало
    5. ПЕРЕМЕННЫЕ И КОНСТАНТЫ   5.1. Объявление переменных В блоках P

DECLARE
SUBTYPE MyDate IS DATE; -- Основан на типе DATE TYPE MyRec IS RECORD (time1 INTEGER, time2 INTEGER); SU

В начало
    5.2. Работа с составными типами данных Запись PL/SQL Для определения записи PL/SQL сначала нужно

Изменяемый массив.
Изменяемый массив, или массив с переменной длиной — это тип данных, практически идентичный массиву в языке программирования С или Java. Синтаксис: TYPE имя_типа IS (VARRAY | VARYING ARRAY]

В начало
  6.2. Итеративное управление Итеративное управление называется также циклом. Цикл (LOOP) повторяет исполнение программного блока до тех пор

В начало
  6.3. Последовательное управление Последовательное управление иначе называется оператором GOTO. При его обнаружении програ

Goto lose_a_pencil;
-- Организуем цикл для всех рядов на верхнем уровне FORrownum IN 1..6 LOOP -- Организуем цикл для всех парт в текущем ряду

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги