Язык PL/SQL. Иван Сергеевич Задворьев
Чтение книги онлайн.

Читать онлайн книгу Язык PL/SQL - Иван Сергеевич Задворьев страница 12

СКАЧАТЬ шаги с ненужными значениями счетчика. Счетчик цикла всегда изменяется на единицу, просто на некоторых шагах цикла ничего делать не нужно.

      Команда CONTINUE

      Команда CONTINUE появилась в версии Oracle 11g. При истинности условия, записанного в конструкции WHEN команды CONTINUE, выполнение текущей итерации цикла прекращается и происходит переход на начало следующей итерации.

      Благодаря команде CONTINUE можно, например, вынести проверки в начало цикла. Перепишем приведенный выше пример с нетривиальным приращением счетчика цикла FOR без помещения кода обработки в условную команду IF:

      BEGIN

      FOR i IN 1..20 LOOP

      CONTINUE WHEN MOD(i,10)!=0;

      DBMS_OUTPUT.PUT_LINE(i);

      END LOOP;

      END;

      Работа с коллекциями

      Коллекции относятся к составным типам данных PL/SQL. Так как основная операция с коллекцией – это перебор и обработка всех ее элементов, то естественно познакомиться с особенностями работы с коллекциями после того, как рассмотрены циклы.

      Виды и свойства коллекций

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

      В PL/SQL есть три вида коллекций:

      ассоциативные массивы (associative array) – неограниченные коллекции, объявляемые только в программах PL/SQL (поэтому в литературе иногда эти коллекции называются таблицами PL/SQL);

      вложенные таблицы (nested tables) – неограниченные коллекции, типы данных на основе которых могут создаваться как объекты баз данных и объявляться в программах PL/SQL;

      массивы переменной длины (variable-size array, VARRAY) – ограниченные коллекции, типы данных на основе которых могут создаваться как объекты баз данных с помощью DDL-команд языка SQL и объявляться в программах PL/SQL.

      Коллекция называется плотной, если все ее элементы, от первого до последнего, определены и им присвоены некоторые значения, включая NULL. Если же у коллекции в диапазоне индексов есть пропуски (какие-то элементы коллекции отсутствуют), то коллекция называется разреженной. Массивы VARRAY всегда являются плотными. Вложенные таблицы первоначально всегда плотные, но по мере удаления некоторых элементов становятся разреженными. Таблицы PL/SQL могут быть разреженными.

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

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

      Работа с таблицей PL/SQL с помощью встроенных методов

      Для иллюстрации техники работы с таблицей PL/SQL покажем, как ее объявить, затем создадим два элемента таблицы и переберем их в цикле:

      SQL> DECLARE

      2 TYPE t_job IS RECORD (position VARCHAR2(100),salary INTEGER);

      3 TYPE t_job_table IS TABLE OF t_job INDEX BY PLS_INTEGER;

      4 TYPE t_person IS RECORD (surname VARCHAR2(30),jobs t_job_table);

      5 l_person t_person;

      6 l_job t_job;

      7 l_job_table t_job_table;

      8 l_row_index PLS_INTEGER;

      9 BEGIN

      10 l_person.surname := 'Ильинский К.В.';

      11

      12 l_job := NULL;

      13 l_job.position := 'инженер';

      14 l_job.salary := 50000;

      15 l_job_table(9) := l_job;

      16

СКАЧАТЬ