Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Результат работы программы

Краткая теория

Блоки PL\SQL.

Базовой единицей любой программы, написанной на PL/SQL, является блок. Из блоков состоят все программы PL/SQL, причем блоки могут

идти один за другим (последовательно) либо вкладываться один в другой.

Существуют два различных типа блоков: анонимные блоки и именованные. Анонимные блоки обычно создаются динамически и выполняются только один раз. Этот тип блоков, как правило, создается в клиентской программе для вызова подпрограммы, хранящейся в базе данных. Именованные блоки отличаются тем, что они имеют имя. Именованные блоки

могут быть разбиты на категории следующим образом:

Помеченные блоки (labeled block) являются анонимными блоками с меткой, которая дает блоку имя. Они создаются обычно динамически и выполняются только один раз. Помеченные блоки используются так же, как и анонимные блоки, но метка позволяет ссылаться на переменные, которые иначе были бы недоступны.

Подпрограммы (subprogram) делятся на процедуры и функции. Они могут храниться в базе данных как автономные объекты, как часть модуля или как методы объектного типа. Подпрограммы обычно не

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

Триггеры (triggers) — это именованные блоки, которые ассоциируются с некоторым событием, происходящим в базе данных. Они, как правило, не изменяются после своего создания и выполняются многократно неявным образом при наступлении соответствующих событий. Событием, активизирующим триггер, может быть выпол­нение оператора языка манипулирования данными (DML, data manipulation language) над некоторой таблицей базы данных. К операторам DML относятся INSERT (ввести), UPDATE (обновить) и DELETE (удалить). Это может также быть оператор языка определения данных (DDL, data definition language), такой как CREATE или DROP, или событие базы данных, например запуск или останов.

Типы PL\SQL.

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

Все имеющиеся предопределенные типы данных определены в PL/ SQL-пакете STANDARD. Например, туда включены операторы, определяющие логический тип данных и два числовых типа:

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

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

PL/SQL поддерживает строки как фиксированной, так и переменной длины, представленные как в традиционных кодировках, так и в кодировках Unicode. CHAR и NCHAR - это типы строк фиксированной длины, а VARCHAR2 и NVARCHAR2 - типы строк переменной длины. Рассмотрим объявление строки переменной длины, которая может вмещать до 2000 символов.

Oracle также поддерживает очень длинные символьные строки - типы LONG и LOB. Эти типы данных позволяют хранить и обрабатывать огромные объемы данных: LOB может содержать до 128 терабайт информации в Oracle Database 10^ (используйте тип LONG только для совместимости с уже существующим кодом. Будущее за типами LOB!). К символьным типам данных LOB относятся CLOB (character large object - большой символьный объект) и NCLOB (National Language Support character large object - большой символьный объект с поддержкой национальных языков, многобайтный формат).

Числовые типы

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

Десятичная природа типа NUMBER оказывается чрезвычайно полезной при работе с денежными величинами. Вам не придется беспокоиться о возможных ошибках округления при переводе числа в двоичное представление. Например, записывая число 0.95, не стоит бояться, что от него через некоторое время останется только 0.949999968.

До выпуска версии Oracle Database 10^ тип NUMBER был единственным числовым типом данных PL/SQL, полностью соответствующим типу данных базы данных. Это одна из причин столь широкого использования типа NUMBER. В Oracle Database 10^ появилось еще два двоичных типа с плавающей точкой: BINARY_FLOAT и BINARY_DOUBLE. Как и NUMBER, оба новых типа поддерживаются как в PL/SQL, так и в базе данных. Правильно применяя их, можно добиться значительного повышения производительности за счет того, что математические операции над новыми типами выполняются аппаратной частью (когда это позволяет аппаратная платформа).

PL/SQL поддерживает ряд числовых типов и подтипов, которые не соответствуют типам базы данных, но, тем не менее, весьма полезны. Упомянем особо PLS_INTEGER, целочисленный тип, для которого арифметические операции выполняются аппаратно. Счетчики циклов FOR реализованы типом PLS_INTEGER.

Даты, временные метки и интервалы

До появления версии Oracle9/ Database мир дат Oracle ограничивался типом DATE, который позволял хранить как дату, так и время (с точностью до секунд). В Oracle9/ Database появились два набора новых связанных типов данных: INTERVAL и TIMESTAMP. Новые типы значительно расширили возможности разработчиков PL/SQL по созданию программ, обрабатывающих и хранящих значения дат и времени с очень высокой точностью, а также вычисляющих и хранящих интервалы времени.


Цель работы:

1. ознакомиться с теоретическим материалом по теме «Блоки PL\SQL.Типы PL\SQL»;

2. написать программу по теме «Блоки PL\SQL.Типы PL\SQL»;

3. проверить текст программы на наличие/отсутствие ошибок;

4. защитить данную лабораторную работу.


Результат работы программы

Блоки программы:

Блок №1

declare

storona_a number;

storona_b number;

begin

storona_a:=:storona_a;

storona_b:=:storona_b;

dbms_output.put_line ('периметр_прямоугольника= '|| storona_a*storona_b);

end;

/

Блок №2

declare

st varchar2 (100):= 'первая лаба,,,,';

st1 varchar2 (100):= 'продолжение';

begin

dbms_output.put_line (st);

dbms_output.put_line (st1);

declare

st1 varchar (100):= 'выполняется успешно!!!!';

begin

dbms_output.put_line (st1);

dbms_output.put_line (st);

declare

st3 varchar (100):= '_______всё норм';

begin

dbms_output.put_line (st1||st3);

end;

end;

dbms_output.put_line (st1);

end;

/

Блок №3

declare

st1 varchar (100):= 'выполняется успешно!!!!';

begin

dbms_output.put_line (st1);

 

declare

st3 varchar (100):= '_______всё норм';

begin

dbms_output.put_line (st1||st3);

end;

end;

/

Блок №4

declare

st varchar2 (100):= 'первая лаба,,,,';

begin

dbms_output.put_line (st);

dbms_output.put_line (replace (st, 'а', 'о'));

end;


Работа программы:

Результат работы:

*** SCRIPT START: Session:STUDENT07@XEON(1) 27.09.2012 10:06:26 ***

Processing...

declare

storona_a number;

storona_b number;

begin

storona_a:=:storona_a;

storona_b:=:storona_b;

dbms_output.put_line ('периметр_прямоугольника= '|| storona_a*storona_b);

end;

 

периметр_прямоугольника= 40

Processing...

declare

st varchar2 (100):= 'первая лаба,,,,';

st1 varchar2 (100):= 'продолжение';

begin

dbms_output.put_line (st);

dbms_output.put_line (st1);

declare

st1 varchar (100):= 'выполняется успешно!!!!';

begin

dbms_output.put_line (st1);

dbms_output.put_line (st);

declare

st3 varchar (100):= '_______всё норм';

begin

dbms_output.put_line (st1||st3);

end;

end;

dbms_output.put_line (st1);

end;

 

первая лаба,,,,

продолжение

выполняется успешно!!!!

первая лаба,,,,

выполняется успешно!!!!_______всё норм

продолжение

Processing...

declare

st1 varchar (100):= 'выполняется успешно!!!!';

begin

dbms_output.put_line (st1);

 

declare

st3 varchar (100):= '_______всё норм';

begin

dbms_output.put_line (st1||st3);

end;

end;

 

выполняется успешно!!!!

выполняется успешно!!!!_______всё норм

Processing...

declare

st varchar2 (100):= 'первая лаба,,,,';

begin

dbms_output.put_line (st);

dbms_output.put_line (replace (st, 'а', 'о'));

end;

 

первая лаба,,,,

первоя лобо,,,,

*** SCRIPT END: Session:STUDENT07@XEON(1) 27.09.2012 10:12:23 ***

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...