Главная страница
Навигация по странице:

  • 38. Структура программы и переменные PL/SQL.

  • Блок состоит из трех основных частей

  • 39. PL/SQL. Условные операторы IF.

  • FALSE (ложь).

  • Синтаксис

  • 40. PL/SQL. Циклы.

  • 2. Условные циклы

  • 3. GOTO

  • Использование курсора в цикле FOR.

  • Например

  • 42. PL/SQL. Хранимые процедуры.

  • 43. PL/SQL. Функции.

  • Функция Результат

  • Стандартные встроенные функции

  • 44. PL/SQL. Триггеры.

  • Между триггерами и процедурами PL/SQL есть три различия

  • Синтаксис команды для создания триггера, следующий

  • Ответы к экзамену по БД. 1. Архитектура базы данных. Физическая и логическая независимость (трехуровневая модель ansi). 3


    Скачать 2.24 Mb.
    Название1. Архитектура базы данных. Физическая и логическая независимость (трехуровневая модель ansi). 3
    АнкорОтветы к экзамену по БД
    Дата08.11.2022
    Размер2.24 Mb.
    Формат файлаdocx
    Имя файлаVoprosy-otvety_BD_ekzamen.docx
    ТипДокументы
    #776756
    страница14 из 14
    1   ...   6   7   8   9   10   11   12   13   14

    37. Поддерживаемый набор символов PL/SQL. Арифметические операторы и операторы отношения.


    Программа на PL/SQL состоит из последовательности операторов, каждый из которых образован одной или несколькими строками текста. Набор символов, из которых можно составлять эти строки текста, зависит от используемого в базе данных набора символов. Например, в таблице 1 приведен перечень символов, доступных в наборе US7ASCII.



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

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

    Ряд символов (как по отдельности, так и в сочетаниях с другими символами) имеет специальное значение в PL/SQL (табл. 2).

    Группы символов образуют лексемы, которые также называют атомарными единицами языка, так как они являются его наименьшими неделимыми составляющими. Лексемами в PL/SQL являются идентификаторы, литералы, разделители и комментарии. Им посвящены последующие разделы.



    В следующей таблице показаны все арифметические операции, поддерживаемые PL / SQL. Предположим, переменная А имеет 10 и переменная B имеет 5, то:



    Операторы отношения.

    Реляционные операторы сравнения двух выражений или значений и возвращают логический результат. В следующей таблице приведены все операторы сравнения, поддерживаемые PL / SQL. Предположим, переменная А имеет 10 и переменная B имеет 20, а затем:

    знак равно

    <>

    =


    38. Структура программы и переменные PL/SQL.


    PL/SQL – это процедурный блочно-структурированный язык. Он представляет собой расширение языка SQL и предназначен для работы с СУБД Oracle.

    PL/SQL предоставляет разработчику приложений и интерактивному пользователю следующие основные возможности:

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

    • создание пакетов, процедур и функций, хранимых в базе данных;

    • предоставление интерфейса для вызова внешних процедур;

    • поддержка как типов данных SQL, так и типов, вводимых в PL/SQL ;

    • применение явного и неявного курсора, а также оператора цикла FOR для курсора;

    • введение у переменных PL/SQL и курсоров атрибутов, которые позволяют ссылаться на тип данных или структуру элемента;

    • введение типов коллекций и объектных типов;

    • поддержка набора операторов управления и операторов цикла;

    • реализация механизма обработки исключений.

    Основной программной единицей PL/SQL является блок, который может содержать вложенные блоки, называемые иногда подблоками.

    Блок позволяет объединять объявления и операторы, связанные общей логикой; может быть анонимным и именованным.

    Блок состоит из трех основных частей:

    • секция объявлений (необязательная часть);

    • тело блока ;

    • обработчики исключений (необязательная часть).

    Структура:



    DECLARE

    -- Описания блока, переменные, типы, курсоры и т. п. (опционально)

    BEGIN

    -- Непосредственно код программы

    EXCEPTION

    -- Обработка исключений (опционально)

    END;

    /* Многострочные

    комментарии… */

    -- Однострочный комментарий

    PL/SQL не чувствителен к регистру, кроме строковых переменных и констант.

    Каждая конструкция PL/SQL должна заканчиваться символом ;.

    Одна конструкция может быть расположена на нескольких строках.

    Переменные — это именованные контейнеры. Они могут содержать информацию (данные) различных видов. В зависимости от того, какую информацию в них можно помещать, они имеют различные типы данных, а чтобы отличать их друг от друга, им присваиваются имена. PL/SQL хранит числа в переменных типа NUMBER, а текст — в переменных типа CHAR или VARCHAR2. Синтаксис объявления переменной в PL/SQL может иметь любую из следующих форм:



    Имя_переменной — это любой правильный идентификатор PL/SQL. Правильный идентификатор PL/SQL должен:

    • Иметь не более 30 символов в длину и не содержать пробельных символов (собственно пробелов и знаков табуляции).

    • Состоять только из букв, цифр от 0 до 9, символа подчеркивания (_), знака доллара ($) и знака фунта (#).

    • Начинаться с буквы.

    • Не совпадать с зарезервированными словами PL/SQL или SQL, которые имеют специальное значение. Например, именем переменной не может быть слово BEGIN, которое обозначает начало выполняемой секции базового блока PL/SQL.

    Переменные PL/SQL:

    • скалярные (char, number, date и т.д.);

    • составные (PL/SQL Table, PL/SQL Record, Nested Table и …);

    • ссылочные;

    • LOB (Large OBject) – большие объекты.

    Тип_данных — это любой допустимый тип данных SQL или PL/SQL. Модификатор NOT NULL требует, чтобы переменная имелазначение. Если он указан, переменной должно быть присвоено значение по умолчанию.

    39. PL/SQL. Условные операторы IF.


    В Oracle, оператор IF-THEN-ELSE используется для выполнения кода при условии TRUE (истинно), или выполнения другого кода, если условие принимает значение FALSE (ложь).

    Существует три различных синтаксиса условных операторов этого типа.

    Синтаксис #1: IF-THEN.

    Используете синтаксис IF-THEN, если хотите выполнять операторы, только когда условие истинно.

    IF УСЛОВИЕ THEN

    {…выполняется, когда УСЛОВИЕ истинно (TRUE)…}

    END IF;

    Синтаксис #2: IF-THEN-ELSE.

    Если вы хотите выполнить один набор предложений, когда условие истинно, используете синтаксис IF-THEN-ELSE, или другой набор предложений, если условие ложно.

    IF УСЛОВИЕ THEN

    {… выполняется, когда УСЛОВИЕ истинно (TRUE)…}

    ELSE

    {… выполняется когда УСЛОВИЕ ложно (FALSE)…}

    END IF;

    Синтаксис #3: IF-THEN-ELSIF.

    Используете синтаксис IF-THEN-ELSIF-ELSE, если хотите выполнить один набор предложений, когда УСЛОВИЕ1 принимает значение истина (TRUE); другой набор предложений, когда УСЛОВИЕ2 истинно (TRUE); или третий набор предложений, когда все предыдущие условия (то есть: УСЛОВИЕ1 и УСЛОВИЕ2) являются ложными (FALSE).

    IF УСЛОВИЕ1 THEN

    {… выполняется, когда УСЛОВИЕ1 истинно (TRUE)…}

    ELSIF УСЛОВИЕ2 THEN

    {… выполняется, когда УСЛОВИЕ2 истинно (TRUE)…}

    ELSE

    {… выполняется, когда оба: УСЛОВИЕ1 и УСЛОВИЕ2 ложно (FALSE)…}

    END IF;

    Примечание.

    • После того, как условие истинно (TRUE), оператор IF-Then-Else будет выполнять заявленный код и не оценит условие дальше.

    • Если условие ложно (FALSE), то выполняется часть ELSE оператора IF-Then-Else.

    • Важно отметить, что участки ELSIF и ELSE являются дополнительными.


    40. PL/SQL. Циклы.


    Циклы предназначены для многократного исполнения конкретных операций. В PL/SQL есть 3 типа циклов:

    1. Безусловные циклы (бесконечные) – выход из них не предусмотрен. Потому как такие циклы специфичны и применяются редко, то организуются они при помощи условных циклов. Условие возможно вообще не указывать или вместо него применять константу. Примером подобного цикла является машина LOOP ... END LOOP.

    2. Условные циклы – команды выполняются прежде тех пор, пока истинно условие. Пример, WHILE условие LOOP ... END LOOP.

    3. Циклы со счетчиком – цикл, в коем счетчик меняет свое значение с начального прежде конечного с определенным этапом, и для любого значения счетчика выполняется последовательность команд, находящихся в цикле. Представителем данного типа циклов является машина FOR счетчик IN стартовое значение...конечное значение LOOP ... END LOOP.

    Самый простой цикл, написанный на PL/SQL, выглядит так:

    LOOP

    NULL;

    END LOOP

    /

    Такой цикл совершенно бессмысленен и небезопасен для экземпляра БД, так как не имеет выхода. Из таких циклов есть три способа выхода:

    1. EXIT – это безусловный выход. Обычно он используется вместе с оператором IF, в котором проверяется условие выхода.

    2. EXIT WHEN – в этом случае выход осуществляется пр при выполнении условия, описанного после WHEN.

    3. GOTO – в этом случае выход из цикла осуществляется с переходом во внешний контекст, заданный меткой.

    41. PL/SQL. Курсоры. Курсорный цикл FOR.



    Курсор – это средство извлечения данных из базы данных Oracle. Курсоры содержат определения столбцов и объектов (таблиц, представлений и т.п.) из которых будут извлекаться данные, а также набор критериев, определяющих какие именно строки должны быть выбраны.
    Использование курсора в цикле FOR.

    Вместо управления курсором операторами OPEN, FETCH и CLOSE язык PL/SQL предоставляет возможность последовательной обработки курсора в цикле FOR.
    Цикл FOR с курсором выполняет следующие действия:

    • Неявно объявляет переменную цикла как запись %ROWTYPE.

    • Открывает курсор.

    • При каждой итерации извлекает следующую строку из результирующего набора в поля неявно объявленной записи.

    • По достижении конца результирующего набора закрывает курсор.


    Например:

    DECLARE

    CURSOR c1 IS

    SELECT f1, f2 FROM tbl2

    WHERE f1 = 10;

    BEGIN

    - Неявное объявление rec1

    FOR rec1 IN c1 LOOP

    /* Выбрана следующая

    строка таблицы */

    INSERT INTO temp_tbl

    VALUES (rec1.f2);

    END LOOP;

    COMMIT;

    END;

    42. PL/SQL. Хранимые процедуры.


    Хранимая процедура (stored procedure) — это программа, которая выполняет некоторые действия с информацией в базе данных и при этом сама хранится в базе данных. В Oracle хранимые процедуры можно писать на языках PL/SQL и Java.

    Хранимые процедуры могут входные параметры и возвращать результаты. В отличие от триггеров, которые принадлежат определенной таблице или представлению, хранимые процедуры принадлежат базе данных в целом. Они могут вызываться любым процессом, использующим базу данных, при условии, что у этого процесса есть достаточные права доступа.

    Хранимые процедуры используются для многих целей. Хотя админи­страторы баз данных используют их для выполнения рутинных задач ад­министрирования, главной областью их применения являются все же при­ложения баз данных. Эти процедуры могут вызываться из прикладных программ, написанных на таких языках, как Java, С#, С++ или VB.Net, а также из веб-сценариев, написанных на VBScript или JavaScript. Кроме того, эти процедуры можно вызывать в интерактивном режиме из команд­ной оболочки SQL*Plus.

    Можно выделить следующие преимущества хранимых процедур:

    В отличие от кода приложений, хранимые процедуры никогда не пере­даются на клиентские компьютеры. Она всегда находится в базе данных и выполняются СУБД на том компьютере, где располагается сервер базы данных. Таким образом, они более безопасны, чем распространяемый код приложения, а кроме того, снижают сетевой трафик. Хранимые процеду­ры постепенно становятся предпочтительным режимом реализации логи­ки приложения в сети Интернет и корпоративных интрасетях. Еще одно преимущество хранимых процедур заключается в том, что SQL-операторы в них могут быть оптимизированы компилятором СУБД.

    43. PL/SQL. Функции.


    Функция – это подпрограмма, которая вычисляет значение.

    Агрегатные функции.

    Функция

    Результат

    COUNT

    Количество строк или непустых значений полей, которые выбрал запрос.

    SUM

    Сумма всех выбранных значений данного поля.

    AVG

    Среднеарифметическое значение всех выбранных значений данного поля.

    MIN

    Наименьшее из всех выбранных значений данного поля.

    MAX

    Наибольшее из всех выбранных значений данного поля.

    Стандартные встроенные функции:

    Функция

    Результат

    CURRENT_DATE

    Текущая дата.

    CURRENT_TIME(точность)

    Текущее время с указанной точностью.

    LOWER(строкa)

    Строка, преобразованная к нижнему регистру;

    SUBSTRING(строка FROM n FOR длина)

    Часть строки, начинающаяся с n-го символа и имеющая указанную длину.

    TRANSLАТЕ(строка USING функция)

    Строка, преобразованная с использованием, указанной функции.

    UPPER(строка)

    Строка, преобразованная к верхнему регистру.


    44. PL/SQL. Триггеры.


    Triggers Триггеры – специальные хранимые процедуры, вызываемые автоматически при изменении данных в таблице (при добавлении, изменении или удалении данных из таблицы).

    Например, можно писать триггеры, срабатывающие при выполнении над таблицей операций INSERT, UPDATE или DELETE; при выдаче команд DDL; при входе пользователя в систему или его выходе из системы; при запуске или останове базы данных; при возникновении ошибок.
    Между триггерами и процедурами PL/SQL есть три различия:

    • Триггеры нельзя вызывать из кода программы. Oracle вызывает их автоматически в ответ на определенное событие.

    • Триггеры не имеют списка параметров.

    • Спецификация триггера немного отличается от спецификации процедуры.
    Синтаксис команды для создания триггера, следующий:

    --- CREATE [OR REPLACE] TRIGGER имя_триггера ---------------------

    --- BEFORE | AFTER активизирующее_событие ON ссылка_на_таблицу ---

    --- FOR EACH ROW [WHEN условие_срабатывания] ---------------------

    --- тело_триггера ------------------------------------------------

    Где:

    имя_триггера – собственно имя вашего триггера.

    активизирующее_событие – указывает момент активации триггера BEFORE до срабатывания оператора DML, AFTER после срабатывания оператора DML.

    ссылка_на_таблицу – собственно таблица, для которой создан триггер.

    FOR EACH ROW - если указано активируется от воздействия на строку если нет, то после любого оператора DML.

    условие_срабатывания – если TRUE триггер срабатывает, если FALSE нет.

    тело_триггера – собственно тело триггера.
    1   ...   6   7   8   9   10   11   12   13   14


    написать администратору сайта