Московский государственный университет имени М.В.Ломоносова
Опубликован: 05.01.2004 | Доступ: свободный | Студентов: 9474 / 1246 | Оценка: 4.04 / 3.84 | Длительность: 10:03:00
ISBN: 978-5-94774-539-9
Лекция 11:

Основы языка PL/SQL

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >

Приведение типов

PL/SQL поддерживает явное и неявное приведение типов:явное приведение типов выполняется с помощью встроенных функций, а неявное - посредством PL/SQL (если это возможно) при присвоении значения одного типа.

Значения переменных различных типов могут присваиваться друг другу в том случае, если они образованы из одного базового типа

Объявление переменных и констант

Переменные могут иметь тип данных SQL или тип данных PL/SQL.

Переменная объявляется в секциях объявлений блока PL/SQL, подпрограммы или пакета.

Для объявления переменной после ее идентификатора следует указывать любой доступный тип данных.

Объявление переменной в PL/SQL может иметь следующие формы:

var_name type;
var_name type := expr;
var_name type DEFAULT expr;
var_name type NOT NULL := expr;
var_name type_var%TYPE;
var_name type_var%TYPE := expr;
var_name user.table.type_col%TYPE;
var_name user.table.type_col%TYPE := expr;

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

При объявлении переменной вместо оператора присваивания может указываться ключевое слово DEFAULT.

Объявляемая переменная может быть определена как NOT NULL. Такой переменной в дальнейшем нельзя присвоить значение NULL.

Переменным можно присваивать значения двумя способами - как с помощью оператора присваивания, так и как INTO-переменной, указываемой в запросе.

При объявлении константы после идентификатора должно быть указано ключевое слово CONSTANT, а после идентификатора типа - указан оператор присваивания и значение константы.

Объявление константы может иметь следующее формальное описание:

const_name CONSTANT type :=value;

Например:

val_real CONSTANT REAL := 5000.00;

Символьные константы заключаются в одинарные кавычки.

Атрибуты %TYPE и %ROWTYPE

Атрибут %TYPE позволяет объявлять переменную типа, соответствующего:

  • типу другой переменной;
  • типу столбца базы данных.

Например:

var1 REAL(14,2);
var2 var1%TYPE;     
   - Переменная var2 будет иметь тип как var1
var_f1 user1.tbl1.f1%TYPE;     
   /* Переменная var_f1 будет иметь тот же 
      тип, что и поле f1 таблицы tbl1 
	  пользователя user1*/

Атрибут %ROWTYPE позволяет объявлять переменную типа "запись", соответствующую строке таблицы. Переменная такого типа имеет поля, совпадающие с полями таблицы по имени и типу.

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

Значения переменным, определенным с использованием атрибута %ROWTYPE , могут быть назначены как присваиванием значения одной записи другой записи, так и как INTO-переменным оператора SELECT.

Например:

DECLARE
   tbl1_rec1 tbl1%ROWTYPE;   
      - Для строки из таблицы tbl1
   tbl1_rec2 tbl1%ROWTYPE;
   CURSOR c1 IS SELECT * FROM tbl1;
   emp_rec2 c1%ROWTYPE;   
      - Для строки курсора с1, 
      - созданного из таблицы tbl1
   emp_rec3 с1%ROWTYPE;
BEGIN 
   SELECT * INTO tbl1_rec1 FROM tbl1 
            WHERE tbl1.f1=1;
   emp_rec2 := emp_rec1;   
      - Присвоение значения всем полям записи
END

Переменная типа "запись" без квалификации именами полей может использоваться только для выборки значений, но ее нельзя применять для вставки или обновления значений строки. В SQL-операторе вставки или обновления для каждого столбца таблицы должно быть указано значение поля записи.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >