DeepEdit!

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

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

SQL*Plus

SQL*Plus

пожалуй, самый простой из инструментов разработки про­грамм PL/SQL. Он дает пользователям возможность вводить SQL-опера­торы и блоки PL/SQL в диалоговом режиме в ответ на приглашение. Операторы направляются непосредственно базе данных, а результаты выводятся на экран. Эта среда функционирует в символьном режиме, и локальной системы поддержки PL/SQL в ней нет.
Обычно SQL*Plu? поставляется вместе с сервером Oracle и частью стандартной системы Oracle. За более подробной информацией о SQL*Plus и его командах обращайтесь к руководству "SQL*Plus User's Guide and Reference".
Команды SQL*Plus не учитывают регистр символов. Так, все эти команды используются для объявления переменных привязки:
SQl> VARIABLE        NUMBER
SQL> variable v_Char char(3) SQL> vaRIAbLe v_Varchar VarCHAR2(5)
Хотя SQL* Plus является средой символьного режима, версия для Win­dows содержит некоторые операции GUI. Они служат для соединения с базой данных и задания различных параметров SQL*Plus, которые до­ступны также в командах символьного режима. В системе UNIX не суще­ствует версии SQL*Plus с GUI.
предоставляет версию        которая создана для работы в
браузере. Эта версия, называемая iSQL*Plus, выдает приглашение SQL> для ввода в символьном режиме в браузере, а выходные данные показы­вает ниже. iSQL*Plus, аналогично версии Windows, поддерживает неко­торые операции GUI (такие, как соединение с базой данных и чтение файлов), но, по сути, работает в символьном режиме. Дополнительную информацию по установке и использованию iSQL*Plus можно найти в документации Oracle.
Соединение с базой данных
В SQL*Plus перед отправкой каких-либо инструкций SQL и PL/SQL необ­ходимо установить соединение с сервером. Это можно сделать одним из
следующих способов:
Путем передачи идентификатора и пароля пользователя (и, как до­полнение, строки соединения) в командной строке SQL*Plus
С помощью оператора connect вSQL*Plus
•        (Только для Windows niSQL*Plus) Посредством определения имени пользователя, пароля и, как дополнение, строки соединения в началь­ном диалоговом окне Log On
В приведенном ниже примере показано, что если пароль не указан, SQL*Plus предлагает ввести его, при этом входные данные не отображают­ся на экране. Диалоговое окно Windows Log On представлено на рис. 2.4.
$sqlplusexample/example
SQL*Plus: Release 9.0.1 ,0.0 - Production on Tue Oct 9 16:32:22 2001 (c) Copyright 2001 Oracle Corporation. All rights reserved.
Connected
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production With the Partitioning option JServer Release 9.0.1.0.0 - Production
Рис. 2.4. Диалоговое окно SQL*Plus Log On Выполнение SQL и PL/SQL
После запуска SQL*PLus выводит приглашение        Здесь можно вво-
дить команды SQL или PL/SQL для отправки на сервер. Можно также вводить команды самого SQL*Plus (такие, как команда set serveroutput on, см. ниже). При выполнении в SQL*Plus нужно ставить точку с запятой (или прямую наклонную черту (forward slash)) в конце SQL-оператора. Точка с запятой не является элементом собственно оператора — это при­знак его окончания. Когда SQL*Plus считывает точку с запятой, он знает, что оператор завершен, и посылает его базе данных. В PL/SQL точка с запятой является синтаксическим элементом блока, а не признаком окон­чания оператора. При вводе пользователем ключевого слова DECLARE или BEGIN SQL*Plus понимает, что пользователь запускает на выполне­ние блок PL/SQL, а не SQL- оператор. Однако SQL*Plus должен знать о том, когда завершится блок. Для этого применяется слэш, который соот­ветствует команде RUN SQL*Plus. SQL*Plus позволяет также закончить
блок PL/SQL точкой, после которой можно ввести run или другую команду
SQL*Plus.

На рис. 2.5 показаны блок PL/SQL и оператор SQL. Обратите внима­ние на слэш после блока PL/SQL, который обновляет таблицу registe-red_stucients. Для оператора SELECT, идущего после блока, слэш не требуется, поскольку указана точка с запятой (однако при желании для SQL-операторов вместо точки с запятой можно вводить и слэш). На рисун­ке также представлены результаты работы блока (сообщение "successfully
completed") и оператора SELECT (данные из таблицы).
Рис. 2.5. PL/SQL в Использование файлов
SQL*Plus дает возможность сохранить текущий блок PL/SQL или опера­тор SQL в файле, который затем можно считать и выполнить. Это полез­но , как при разработке программ PL/SQL, так и при их последующем выполнении. К примеру, можно сохранить в файле команду CREATE OR REPLACE, а затем внести нужные изменения в процедуру или функцию, отредактировав этот файл. Для сохранения изменений в базе данных до­статочно считать файл в SQL*Plus. В одном файле может содержаться не­сколько команд.
Команда start, предоставляемая SQL*Plus, считывает файл (с диска либо в Огас1е9гиз Web с помощью URL). Любой текст, записанный в фай­ле, будет запущен на выполнение, как если бы он был введен непосредст­венно с клавиатуры. Символ @ является сокращенной записью команды start. Предположим, что файл File, sql содержит следующее:
• - Этот пример содержится в файле File.sql BEGIN
Рис. 2.6. Чтение из файла Совет
Можно использовать этот прием для выполнения примеров, приводимых в книге.
Модуль DBMS_OUTPUT
PL/SQL не имеет встроенных функций ввода/вывода. Модуль UTLFILE (см. главу 12) предоставляет возможность чтения и записи в файлы, но это не то же самое, что вывод на экран. Чтобы исправить ситуацию, SQL*Plus совместно с модулем DBMS OUTPUT обеспечивает возмож­ность вывода сообщений на экран. Это делается в два этапа:
1.        Нужно включить режим вывода в SQL*Plus с помощью команды set
server-output. Эта команда имеет формат:
SETSERVEROUTPUT {ON|OFF) [SIZE n]
где п — размер выходного буфера. Если n не определено, по умолча­нию используется 2000 байт. Максимальный размер равен 1 000 000 байт. Ключевые слова ON и OFF включают и выключают вывод.
2.        В программе PL/SQL используется процедура DBMS_OUTPUT.PUT_LINE, которая помещает свои аргументы в выходной буфер.
По завершении этих действий и выполнения блока        выведет результат на экран. Во время выполнения буфер заполняется вызовами DBMS OUTPUT.PUT LINE. SQL*Plus не извлекает содержимое из буфера и выводит его, когда управление возвращается        т.е. после завершения выполнения блока.

Внимание

DBMS OUTPUT и UTL FILE являются модулями. Дополнительную информацию о создании и использовании модулей можно найти в главах 9 и 10, а в приложение А описываются многие модули, поставляемые вместе с базой данных.
 









jAntivirus