+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
Яндекс.Деньги VISA, EUROCARD/MASTER CARD, DCL, JCB WebMoney RBK Money Деньги@mail.ru Сбербанк РФ ASSIST QIWI кошелек
 
Курс расчета
 
 1 у.е. = 61.41 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

Работаем с PL/SQL

11.03.2008 18:13

Сью Хапер,

член Oracle ACE

Источник: журнал Otacle Magazine, #6, 2007г.

Редактирование, компиляция, запуск и отладка PL/SQL-кода легко выполняются в Oracle SQL Developer.

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

Эта статья знакомит с основными возможностями SQL Developer для работы с PL/SQL базы данных Oracle. Примеры статьи используют демонстрационную схему HR и пакет EMP_FETCHER - и то, и другое доступно при установке базы данных по умолчанию - и объектный тип EMP_REC, который будет создан. В ходе работы с примерами:

* выполняются PL/SQL-процедуры, функции и пакеты;

* редактирование PL/SQL-кода;

* компиляция PL/SQL-кода;

* отладка (как локально, так и удаленно) скомпилированного PL/SQL-кода.

С чего начать

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

1. На стартованной базе данных Oracle запустите Oracle SQL Developer.

2. Создайте новое соединение со схемой HR и назовите его HR_ORCL. (Более подробная информация о создании соединения приводится во врезке "Следующие шаги".)

3. Откройте редактор SQL (Tools -> SQL Worksheet) для HR_ORCL. (Он открывается автоматически, когда вы первый раз создаете новое соединение)

4. Введите код Листинга 1 в текстовом окне Enter SQL Statement.

Листинг 1: Скрипт для создания объектного типа EMP_REC:

CREATE OR REPLACE TYPE EMP_REC AS

OBJECT(EMPLOYEE_ID NUMBER(6),

LAST_NAME VARCHAR2(25),

JOB_ID VARCHAR2(10),

MANAGER_ID NUMBER(6),

HIRE_DATE DATE,

SALARY NUMBER(8, 2),

COMMISSION_PCT NUMBER(2,2),

DEPARTMENT_ID NUMBER(4));

5. Нажмите F5 (или кнопку Run Script) для создания объектного типа EMP_REC.

6. Нажмите кнопку Clear или Ctrl-D, чтобы очистить текстовое окно Enter SQL Statement.

7. Создайте спецификацию пакета и его тело, используя, соответственно, код Листингов 2 и 3 в текстовом окне Enter SQL Statement и выполнив каждый из скриптов. (Другой способ создать новый пакет - раскрыть узел HR_ORCL в Connections Navigator, выбрать Packages, и нажать правой кнопкой мыши по пункту меню New Package...).

Листинг 2: Скрипт для создания спецификации пакета EMP_FETCHER

CREATE OR REPLACE PACKAGE EMP_FETCHER AS

FUNCTION GET_EMP(EMP_NO IN NUMBER) RETURN EMP_REC;

Листинг 3: Скрипт для создания тела пакета EMP_FETCHER

CREATE OR REPLACE PACKAGE BODY EMP_FETCHER AS

FUNCTION GET_EMP(EMP_NO IN NUMBER) RETURN

EMP_REC IS EMP_FOUND EMPLOYEES % ROWTYPE;

EMP_RTN EMP_REC;

BEGIN

SELECT *

INTO EMP_FOUND

FROM EMPLOYEES

WHERE EMPLOYEES.EMPLOYEE_ID = EMP_NO;

EMP_RTN := EMP_REC(EMP_FOUND.EMPLOYEE_ID,

EMP_FOUND.LAST_NAME,

EMP_FOUND.JOB_ID,

EMP_FOUND.MANAGER_ID,

EMP_FOUND.HIRE_DATE,

EMP_FOUND.SALARY,

EMP_FOUND.COMMISSION_PCT,

EMP_FOUND.DEPARTMENT_ID);

RETURN EMP_RTN;

END;

END;

Чтобы увидеть новый пакет в Connections Navigator, раскройте узел HR_ORCL, а затем раскройте узел Packages. Рис. 1 показывает как выглядят SQL-редактор (worksheet) и Connections Navigator после завершения описанных шагов.

Запуск PL/SQL-процедур, функций, пакетов

Для запуска любой PL/SQL-процедуры, функции или пакета выберите объект в Connections Navigator, нажмите на него правой кнопкой мыши и выберите Run. Запустим пакет EMP_FETCHER. Откроется диалоговое окно Run PL/SQL, отображающее анонимный PL/SQL-блок и возвращаемое значение. Вы увидите это диалоговое окно при запуске любого PL/SQL-кода в Oracle SQL Developer. Оно показывает детали параметров - и, для функций, возвращаемого значения - для выбранного объекта. Если выбранный объект - пакет, диалоговое окно покажет список процедур и функций, определенных в спецификации пакета. Вы можете выбрать одну из этих процедур или функций для запуска.

В PL/SQL-блоке измените EMP_NO := NULL; на EMP_NO := 201; и нажмите OK. В таблице EMPLOYEES 201 - это

Рис. 1: Connections Navigator и SQL-редактор

существующий сотрудник, поэтому пакет выполняется и завершается с минимальной ответной реакцией. Для сравнения запустите пакет опять для EMP_NO := 2001; (несуществующий сотрудник). После завершения вы увидите сообщение об ошибке "no data found".

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

-- Модифицируйте код для вывода переменной

-- DBMS_OUTPUT.PUT_LINE("v_Return = " // v_Return);

Если раскомментировать и модифицировать вторую из этих двух строк, можно будет увидеть результат. Функция возвращает запись, или набор элементов, поэтому необходимо указать, какое значение(я) требуется отображать. Можно выбрать и все значения записи. Этот пример использует значения LAST_NAME, HIRE_DATE и SALARY. Раскройте узел Types в Connections Navigator и выберите EMP_REC. Проверьте код. Вернитесь к пакету EMP_FETCHER, и запустите его опять. Измените EMP_NO := 2001 обратно на EMP_NO := 201. Затем замените строку

--DBMS_OUTPUT.PUT_LINE("v_Return = " // v_Return);

на

DBMS_OUTPUT.PUT_LINE("Employee "// emp_no // " is " // v_return.LAST_NAME);

DBMS_OUTPUT.PUT_LINE("Hired on the "// v_return.HIRE_DATE // " and earns "// v_return.salary);

Нажмите OK, и посмотрите результат в окне Running - Log.

Редактирование и компиляция PL/SQL

Раскройте пакет EMP_FETCHER в Connections Navigator, чтобы открыть редактор PL/SQL-кода, и дважды щелкните по узлу EMP_FETCHER Body, чтобы открыть две новые группы закладок. Первая группа, только для чтения, легко распознается перечнем закладок в верхней части. Вторая группа - это редактор кода.

В Oracle SQL Developer есть завершитель кода (Code Insight), который включает как завершитель параметров (Parameter Insight), так и завершитель вызова (Completion Insight). Завершитель параметров отображает контекстно-зависимое всплывающее меню, которое показывает список процедур или функций пакета. Завершитель вызова отображает контекстно-зависимое всплывающее меню, которое показывает список возможных способов продолжения написания кода от места нахождения курсора, который можно использовать для автозавершения редактируемого кода, где бы он ни редактировался, в редакторе кода или в редакторе SQL. По умолчанию, если нажать точку (.) и подождать чуть больше секунды, завершитель вызова включается автоматически (Вы можете изменить время задержки в настройках предпочтений). Для вызова подсказки вручную, нажмите Ctrl-space. Для проверки работы завершителя вызова наберите: SELECT HR. в редакторе кода Oracle PL/SQL, и подождите. Завершитель вызова покажет всплывающее меню, которое отображает все объекты схемы HR. Нажмите на объект списка, чтобы добавить его в код после курсора.

Более полезной может быть функция поиска, предусмотренная во всплывающем завершителе, например, по алиасу таблицы. Наберите

SELECT FROM EMPLOYEES e

в редакторе кода. Затем наберите e между SELECT и FROM и нажмите Ctrl-space. После паузы, список столбцов таблицы EMPLOYEES будет показан во всплывающем меню.

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

Когда вы будете готовы компилировать, нажмите кнопку Compile или Ctrl-Shift-F9. Все ошибки компиляции отображаются в окне Compiler-Log. Щелкните дважды по ошибке и перейдите к источнику ошибки.

Отладка PL/SQL-кода

Даже если PL/SQL-код успешно компилируется и запускается, это не означает, что он работает так, как хотелось бы. Это как раз тот случай, когда необходима отладка.

Для отладки кода необходимо установить одну или несколько точек останова, а затем выбрать Compile for Debug. В результате PL/SQL-код будет откомпилирован с отладочной информацией. Если затем запустить этот код в режиме отладки, он выполнится до точки останова. Точки останова могут настраиваться; например, можно связать точки останова с любым необработанным исключением или с предопределенным исключением Oracle Database (Если вы отлаживаете PL/SQL в базе данных версии до Oracle9IDatabase Release 2, то для отладки PL/SQL необходимо установить предпочтение Migration -> PL/SQL Debugger в Use Probe Debugger).

Основные возможности отладки в Oracle SQL Developer позволяют контролировать выполнение программы. Например, можно переходить по каждой строке кода или через процедуру или функцию. Oracle SQL Developer отображает значения переменных и данных на каждом шаге кода. Пошаговое выполнение кода полезно при отладке процедуры, которая вызывает функцию. Не обязательно проходить по всем строкам функции, так как можно перескочить через неё и вернуться в отлаживаемую процедуру.

Локальная и удаленная отладка в Oracle SQL Developer

Использование Oracle SQL Developer для локальной отладки PL/SQL означает, что вы выбираете и присоединяетесь к PL/SQL-программе, используя SQL Developer Connections Navigator. Вы устанавливаете точку останова в том месте, где отладчик должен сделать паузу, и затем нажимаете кнопку Debug. Oracle SQL Developer стартует отладочный сеанс, соединяется с ним, и останавливается, когда достигнет точки останова. При локальной отладке Oracle SQL Developer - это клиент, который инициирует отладку.

Удаленная отладка PL/SQL-кода в Oracle SQL Developer означает, что вы инициируете отладочную акцию с клиента, внешнего по отношению к Oracle SQL Developer. Внешние клиенты могут быть PL/SQL Web-приложениями, приложениями Oracle Application Express или сессиями SQL*Plus. Удаленная отладка требует некоторых ручных действий: запуск отладочного листенера Oracle SQL Developer и присоединение к этому листенеру через сессию базы данных, которую требуется отладить (Удаленная отладка недоступна для баз данных, версия которых ниже Oracle9I Database Release 2).

Следующие шаги описывают пример удаленной отладочной сессии:

1. В Oracle SQL Developer присоединитесь к базе данных, где находится PL/SQL-код. Используйте ту же строку соединения HR_ORCL и пакет EMP_FETCHER, которые использовались ранее.

2. Выберите соединение HR_ORCL в Connections Navigator, и затем щелкните правой кнопкой мыши и выберите Remote Debug. Откроется диалоговое окно Listen for JPDA.

3. Введите порт и IP-адрес сервера. Теперь вы видите новое окно Run Manager, на котором отображается информация о сервере Debug Listener. (Можно установить Tools -> Preferences -> Debugger -> Prompt for Debugger Host для отладки, когда соединение выполняется через бранмауэр или сессии виртуальных частных сетей [virtual private network - VPN] ).

4. В Connections Navigator выберите тело пакета EMP_FETCHER, затем щелкните правой кнопкой мыши и выберите Edit..., чтобы открыть редактор кода Oracle PL/SQL. Кликните в левом поле на FUNCTION GET_EMP..., чтобы установить точку останова.

5. Кликните Compile for Debug как показано на Рис. 2.

6. Теперь вы готовы к тому, чтобы начать удаленный процесс отладки со стороны Oracle SQL Developer. Для этого необходимо, чтобы был готов внешний клиент, в

Рис. 2: Компиляция с отладочной информацией

данном случае SQL*Plus. Запустите сессию в SQL*Plus для того же самого пользователя базы данных, и введите IP-адрес и порт, заменив на ваши собственные, которые использовались для удаленного подключения в Oracle SQL Developer:

exec DBMS_DEBUG_JDWP.CONNECT_TCP ("127.0.0.1", 4000)

7. В SQL*Plus используйте анонимный блок для вызова функции:

DECLARE

EMP_NO NUMBER;

v_Return HR.EMP_REC;

BEGIN

v_Return := EMP_FETCHER.GET_EMP(201);

END;

/

8. Теперь управление передано Oracle SQL Developer и вы можете выполнять код по шагам. Начиная с этого момента процесс такой же, как при локальной отладке.

Стали активны различные отладочные окна. Все они имеют свое назначение, однако важными сразу же становятся:

• Окно Debugging, которое позволяет управлять выполнением программы. Начните отладку, нажимая пиктограмму Step Into.

• Редактор кода, который показывает точку выполнения. Когда отладка выполняется по шагам, при перемещении мыши всплывающие подсказки отображают название и значение переменной под указателем. Продолжайте нажимать Step Into до тех пор пока не достигните строки EMP_RTN:= EMP_REC.... В этой точке дайте мыши переместиться к переменной EMP_FOUND, чтобы увидеть всплывающую подсказку, как показано на Рис. 3.

• Окно Data отображает все переменные, которые действительны в текущем контексте. Перейдя на точку выполнения EMP_RTN := EMP_REC..., выберите закладку Data и раскройте узел EMP_FOUND. Теперь запись заполнена. В этой точке можно просматривать и модифицировать переменные, чтобы увидеть их влияние на процедуру.

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

117

Рис. 3: Использование Step Into и всплывающей подсказки

 Заключение

В Oracle SQL Developer можно просматривать и редактировать объекты базы данных, данные запросов и выпускать отчеты. Одна из полезных возможностей Oracle SQL Developer - это способность редактирования, компиляции, выполнения и отладки PL/SQL. Oracle SQL Developer поддерживает как локальную так и удаленную отладку; возможности удаленной отладки позволяют подхватить отладочную сессию PL/SQL в Oracle SQL Developer от внешних клиентов (таких, как SQL*Plus).

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Популярные статьи
CASE Разработка ПО СУБД и хранилища данных Системное администрирование Резервное копирование Информационная безопасность Средства тестирования SAP Business Objects Microsoft Oracle IBM Rational Офисное ПО Графические редакторы САПР Прикладное ПО Управление проектами Управление качеством Управление разработкой ПО Разработка веб-приложений Интеграция приложений и данных Разработка отчетных форм Операционные системы Windows Операционные системы Linux Операционные системы Unix Антивирусное ПО и защита от спама Управление ИТ-инфраструктурой Управление бизнесом Оптимизация бизнес-процессов ИТ-Обучение AutoDesk Corel IBM Interface Свободное ПО Embarcadero ИТ-Сертификация Eset Software Лаборатория Касперского Apple IBM Lotus VMware Clouds Мобильные приложения IBM Big Data IBM Tivoli Software Atlassian Pty Ltd. Семантические технологии
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2016. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2016 Standard
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   ERPforum.ru    Interface.ru/training   Olap.ru   Job.com.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года