пятница, 8 февраля 2013 г.

можно ли oracle sql developer подключить локально

Элементы модуля могут указываться в любом порядке. Однако, как и в разделе объявлений, объект должен быть объявлен до того как на него будут произведены ссылки. Например, если частью условия WHERE курсора является некоторая переменная, то она должна быть объявлена до объявления курсора.

Возьмем на заметку следующее:

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

код_инициализации_функции |

код_инициализации_процедуры |

CREATE OR REPLACE PACKAGE BODY имя_модуля {IS AS}

Тело модуля определяется так:

объявление_курсора |

объявление_исключительной_ситуации |

определение_типа |

объявление_переменной |

описание_функции |

описание_процедуры |

CREATE OR REPLACE PACKAGE имя_модуля {IS AS}

После их размещения, на них можно ссылаться из других блоков PL/SQL. По этому в них можно описывать глобальные переменные для PL/SQL. Давайте рассмотрим как описывается модуль. Каждый модуль состоит из двух частей описания (заголовка) и тела. Заголовок модуля определяется так:

Слева хорошо виден сам пакет, а справа первая сверху строчка "procedure put_line(a varchar2);" и есть как раз функция вывода "на экран". В отличие от процедур и функций, которые могут содержатся локально в блоке или хранится в базе данных, пакеты могут быть только хранимыми и никогда локальными! К слову при использовании пакетов, производительность системы увеличивается. По своей сути модуль представляет собой именованный раздел объявлений. В него могут входить, различные объявления, как то:

Так вот это и есть пакет, который занимается тем что выводит "информацию на экран" (в переносном, смысле!). Если вы помните, то ранее я часто говорил - "Воспользуемся пакетом ... бла бла бла", тогда я не акцентировал внимание, а вот сейчас как раз настало время. Дело в том, что при установке сервера Oracle - происходит установка очень большого количества пакетов. Для работы с динамическими запросами DBMS_SQL, для работы с Web пакет DBMS_WEB и т.д. Все это огромное количество готового кода, который разработчики фирмы Oracle предоставляют в ваше распоряжение. К примеру, если посмотреть "глазами" PL/SQL - Developer то, пакет DBMS_OUTPUT выглядит в системе примерно вот так:

DBMS_OUTPUT.put_line('HELLO WORLD!');

Немаловажным фактором является то, что мы с вами уже научились работать с процедурами PL/SQL. Как их создавать, передавать им параметры, изменять, удалять - я думаю это для вас уже не вызывает затруднений. Однако в PL/SQL есть еще одно очень, я бы сказал концептуальное и достаточно интересное понятие, а именно пакеты (package). Еще их называют модулями. Сама концепция пакета в PL/SQL пришла все из того же языка программирования Ada. Пакет позволяет в точном определении хранить связанные объекты в одном месте. Что это значит? Допустим, у вас есть группа функций или процедур которая выполняет, скажем, расчет заработной платы. Как правило, это 20-ть - 30-ть функций и процедур. Такое количество хранимых конструкций как правило приводит к тому, что после отладки вашего проекта, Вы уже смутно представляете себе, что делает каждая функция сама по себе, и как говорил персонаж моего любимого мультфильма - "Не понятно, что где валяется и когда все это кончится!" :) Так вот здесь нам на помощь и приходят пакеты (модули кому как больше нравится). Я думаю, вы все помните такую конструкцию:

www.ПЕРВЫЕ ШАГИ.ru :: Шаг 96 - PL/SQL - Понятие пакета в языке PL/SQLШаг 96 - PL/SQL - Понятие пакета в языке PL/SQL

Комментариев нет:

Отправить комментарий