Иван Задворьев - Язык PL/SQL

Тут можно читать онлайн Иван Задворьев - Язык PL/SQL - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Array SelfPub.ru, год 2018. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Иван Задворьев - Язык PL/SQL краткое содержание

Язык PL/SQL - описание и краткое содержание, автор Иван Задворьев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.

Язык PL/SQL - читать онлайн бесплатно полную версию (весь текст целиком)

Язык PL/SQL - читать книгу онлайн бесплатно, автор Иван Задворьев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Понятно, что для режима передачи значений параметров IN используется передача параметров по ссылке (ведь IN-параметры не изменяются внутри процедур и функций, поэтому значение достаточно только читать по ссылке). Для режимов OUT и IN OUT обычно используется передача по значению.

Ошибки компиляции программ PL/SQL

На практике в большинстве случаев первая попытка откомпилировать программу на языке PL/SQL приводит к получению сообщения о наличии ошибок в ее коде. Чтобы увидеть выявленные компилятором ошибки, можно воспользоваться командой утилиты SQL*Plus SHOW ERRORS. Если команда SHOW ERRORS используется без параметров, то возвращаются ошибки последней компилированной программы.

Создадим процедуру PL/SQL с синтаксической ошибкой (пропущен символ ; после команды NULL):

SQL> CREATE PROCEDURE proc1 AS

2 BEGIN

3 NULL

4 END;

5 /

Warning: Procedure created with compilation errors.

SQL> SHOW ERRORS

Errors for PROCEDURE PROC1:

LINE/COL ERROR

– –

4/1 PLS-00103: Encountered the symbol "END" when expecting one of the

following: ; The symbol ";" was substituted for "END" to continue.

Попробуем создать процедуру c другой ошибкой:

SQL> CREATE OR REPLACE PROCEDURE test(p1 IN INTEGER,

2 p2 OUT INTEGER,

3 p3 IN OUT INTEGER) IS

4 l_p INTEGER := 10;

5 BEGIN

6 p1 := l_p;

7 END;

8 /

Warning: Procedure created with compilation errors.

SQL> SHOW ERRORS

Errors for PROCEDURE TEST:

LINE/COL ERROR

– –

6/3 PL/SQL: Statement ignored

6/3 PLS-00363: expression 'P1' cannot be used as an assignment target

В коде процедуры test имеется семантическая (смысловая) ошибка – попытка изменить значение параметра с режимом передачи IN. Компилятор PL/SQL при анализе кода проверяет отсутствие таких параметров в левой части команд присваивания, в конструкциях SELECT INTO и в других местах кода, где значения таких параметров может быть изменено.

В обоих случаях процедуры proc1 и test как новые объекты базы данных создавались, но с ошибками (Procedure created with compilation errors). Такие объекты базы данных получают статус INVALID и непригодны для использования.

Попытка вызвать процедуру test приведет к ошибке:

SQL> DECLARE

2 l_arg1 INTEGER :=5;

3 l_arg2 INTEGER :=6;

4 l_arg3 INTEGER :=7;

5 BEGIN

6 test(p1 => l_arg1,p2 => l_arg2,p3 => l_arg3);

7 END;

8 /

test(p1 => l_arg1,p2 => l_arg2,p3 => l_arg3);

*

ERROR at line 6:

ORA-06550: line 6, column 3:

PLS-00905: object USER1.TEST is invalid

ORA-06550: line 6, column 3:

PL/SQL: Statement ignored

Хранимая программа PL/SQL может получить статус INVALID как из-за наличия в ее коде синтаксических и семантических ошибок, так и по другим причинам, например, если какие-то объекты базы данных, к которым есть обращения в коде программы, стали недоступными (были удалены, были отозваны привилегии доступа к ним и т. п.).

Отладка программ на PL/SQL

Исправлять ошибки, выявленные компилятором PL/SQL в ходе анализа кода, обычно довольно просто. Для исправления выявленных пользователями ошибок этапа выполнения, следует использовать отладчик PL/SQL. Для удобства отладки можно порекомендовать использовать специализированные средства, например, интегрированную среду разработки Quest SQL Navigator, в которой есть и breakpoints, и watches, и step into, и step over – в общем, все средства, достаточные для эффективной отладки программ на процедурном языке программирования.

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

SQL> ALTER PROCEDURE insRec COMPILE DEBUG;

Procedure altered.

Редактировать код хранимых программ по опыту авторов также рекомендуется в специализированном Stored Program Editor, который есть в Quest SQL Navigator, TOAD, PL/SQL Developer и Oracle SQL Developer:

после открытия в редакторе исходного текста хранимой программы с ошибками курсор в тексте сразу позиционируется на место ошибки с отображением сообщения об ошибке;

в Stored Program Editor редактируется актуальная версия кода, которая находится в словаре-справочнике данных базы данных Oracle;

есть стандартные для современных IDE подсветка синтаксиса и автодополнение кода, что очень удобно;

нажатием клавиш Ctrl+S или соответствующей кнопки интерфейса можно быстро отправить код программы на компиляцию.

Пакеты

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

pk_clients (пакет для работы с клиентскими данными);

pk_stocks (пакет для работы со складами);

pk_orders (пакет для обработки заказов);

Для каждого пакета следует назначить ответственного за него программиста, который будет сопровождать пакет и развивать его функциональность. Часть кода, реализующего общесистемную логику, например, унифицированную обработку ошибок и ведение журналов изменения данных, можно выделить в отдельную группу пакетов ядра прикладной системы (kernel packages), назначив ответственными за них самых опытных программистов.

Спецификация и тело пакета

Пакет PL/SQL состоит из двух объектов базы данных: спецификации пакета (PACKAGE) и тела пакета (PACKAGE BODY). Команда создания спецификации пакета имеет следующий синтаксис:

CREATE [OR REPLACE] PACKAGE [имя_схемы.]имя_пакета {IS | AS}

спецификация пакета

END;

Команда создания тела пакета имеет следующий синтаксис:

CREATE [OR REPLACE] PACKAGE BODY [имя_схемы.]имя_пакета {IS | AS}

[спецификация локальных элементов пакета]

блоки PL/SQL реализации процедур и функций, объявленных в спецификации

блоки PL/SQL локальных процедур и функций

[BEGIN секция инициализации пакета]

END;

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

пользовательские типы данных;

пользовательские исключения;

процедуры и функции;

переменные;

константы;

курсоры.

Эти программные элементы называются глобальными пакетными переменными, глобальными пакетными курсорами и т. п.

Для процедур и функций в спецификации пакета присутствуют только заголовки – названия процедур и функций и описания их параметров. В спецификации пакета нет блоков PL/SQL, реализующих логику процедур и функций, вся она находится в теле пакета. Можно считать, что спецификация пакета является интерфейсной частью – аналогом заголовочных файлов (header files), имеющихся, например, в языке программирования C++.

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Иван Задворьев читать все книги автора по порядку

Иван Задворьев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык PL/SQL отзывы


Отзывы читателей о книге Язык PL/SQL, автор: Иван Задворьев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x