Введение в коллекции PL / SQL
Прежде всего, как и другие современные языки программирования, PL / SQL также предоставляет программистам возможность использовать коллекции PL / SQL. Таким образом, в общих чертах, коллекция представляет собой структуру данных, имеющую упорядоченную группу элементов одного и того же типа данных, и доступ к этим элементам осуществляется через индексы в соответствии с конкретными требованиями. Обычно используемые коллекции в большинстве языков программирования: Arrays, Set, List, Queue и т. Д.
Коллекция PL / SQL предоставляет множество преимуществ как программисту, так и пользователю, сохраняя и получая доступ к данным схожих типов данных в приложении. Когда есть необходимость обрабатывать данные одновременно или обрабатывать большой объем данных, коллекции PL / SQL очень полезны. Это также уменьшает размер и скорость обработки при хранении данных и доступе к элементам. К элементам в коллекциях можно легко получить доступ через циклы и индексы. В отличие от массивов в других языках программирования, PL / SQL поддерживает только одномерные коллекции, а данные в коллекциях идентифицируются индексами (также называемыми индексами в других языках). Каждый элемент доступен и обработан через этот уникальный индекс.
Типы коллекций PL / SQL
Коллекции PL / SQL имеют 3 типа, которые приведены ниже с синтаксисом:
Вложенные таблицы
Вложенная таблица - это коллекция PL / SQL, размер которой не фиксирован. Таким образом, это похоже на одномерный массив за исключением того факта, что размер фиксирован в массивах, и он может быть плотным и разреженным в обоих случаях. Программист должен каждый раз расширять память, прежде чем использовать ее, используя EXTEND Subscript во Вложенной таблице, начиная с целого числа «1».
Вложенные таблицы попадают в коллекции Persistent PL / SQL, что означает, что они могут быть использованы в дальнейшем при хранении в базе данных. Программист также может удалить элемент массива и сделать таблицу разреженной, что означает, что вложенные таблицы могут быть как плотными, так и разреженными. Вложенные таблицы могут быть объявлены либо внутри блока PL / SQL, либо на уровне схемы.
Поскольку нет ограничений на верхний размер во вложенных таблицах, они подпадают под категорию неограниченных коллекций PL / SQL.
Синтаксис:
TYPE typ_name IS table of element_data_type;
Table_name typ_name;
Массивы переменного размера или VARRAY
VARRAY - это коллекция PL / SQL, в которой размер коллекции фиксирован, как определено в ее определении, поэтому VARRAY называются ограниченными элементами. Массивы заполняются последовательно, начиная с нижнего индекса 1. В отличие от вложенных таблиц, массивы обеспечивают меньшую гибкость, поскольку они плотны. только. Таким образом, программист не может удалить какой-либо элемент между ними, либо весь массив данных удаляется, либо его можно обрезать с конца Varrays должен быть доступен и храниться последовательно. Его можно определить либо внутри блока PL / SQL, либо на уровне схемы. Как и вложенные таблицы, varrays подпадает под категорию постоянных коллекций, поэтому их можно повторно использовать и хранить в базе данных.
Синтаксис:
TYPE typ_name IS VARRAY OF element_data_type;
Ассоциативные массивы
Как следует из названия, ассоциативные массивы используются для хранения значений в парах ключ-значение. Используемый ключ может быть как строковым, так и целочисленным. Ассоциативные массивы также называются индексной таблицей. Эта коллекция может быть как плотной, так и редкой. В ассоциативных массивах размер массива не фиксирован при запуске, и программисту не нужно инициализировать их перед использованием. Ассоциативный массив относится к категории непостоянных коллекций, что означает, что они не хранятся в базе данных и не могут быть повторно использованы, поэтому они определены внутри блока PL / SQL и используются только в этом конкретном сеансе. Эти массивы относятся к категории неограниченных коллекций.
Синтаксис:
TYPE typ_name IS TABLE OF element_data_type;
Методы сбора
PL / SQL предоставляет несколько предопределенных методов, облегчающих работу с коллекциями. Некоторые из методов приведены ниже:
S.No. | Название метода | Описание |
1. | COUNT | Возвращает количество элементов, присутствующих в коллекции |
2. | ПЕРВЫЙ | Возвращает наименьший (первый) порядковый номер в коллекции для целочисленных индексов |
3. | ПОСЛЕДНИЙ | Возвращает самый большой (последний) индекс в коллекции для целочисленных индексов. |
4. | EXISTS (п) | Он используется для проверки наличия определенного элемента в коллекции или нет. Возвращает TRUE, если в коллекции присутствуют n-е элементы, FALSE, если нет. |
5. | Предшествующий уровень (п) | Он возвращает номер индекса, который является предшественником индекса (n), заданного пользователем в коллекции. |
6. | NEXT (п) | Он возвращает номер индекса, который является преемником индекса (n), заданного пользователем в коллекции. |
7. | ОТДЕЛКА | Используется для удаления элементов из коллекции. TRIM удаляет последний элемент из коллекции, а TRIM (n) удаляет последний элемент n из конца коллекции. |
8. | УДАЛЯТЬ | Он используется для удаления всех элементов из данной коллекции. Устанавливает количество коллекции на 0 после удаления всех элементов |
9. | УДАЛИТЬ (т, п) | Он используется в случае ассоциативных массивов и индексированных таблиц для удаления всех элементов в диапазоне от m до n. Возвращает ноль, если m больше n. |
10. | ПРЕДЕЛ | Используется для проверки максимального размера коллекции. |
Коллекция исключений
Ниже приведены некоторые исключения, которые могут возникнуть при работе с коллекциями.
Название исключения | Сценарий, в котором возникают исключения |
ДАННЫЕ НЕ НАЙДЕНЫ | Исключение возникает, когда нижний индекс ссылается на элемент, который удален и больше не существует. |
VALUE_ERROR | Исключение возникает, когда значение столбцов, пытающихся получить доступ, не может быть преобразовано в тип ключа или когда индекс является нулевым |
COLLECTION_IS_NULL | Исключение возникает при работе с автоматически нулевой коллекцией |
SUBSCRIPT_BEYOND_CO UNT | Исключение возникает, когда нижний индекс превышает максимальное количество элементов в коллекции. |
SUBSCRIPT_OUTSIDE_LIM IT | Исключение возникает при попытке ссылки с использованием номера индекса, который находится за пределами допустимого диапазона. |
TOO_MANY_ROWS | Исключение возникает, когда оператор SELECT into возвращает более 1 строки. |
Преимущества коллекций в PL / SQL
Некоторые из преимуществ коллекций PL / SQL приведены ниже:
- Кроме того, одним из самых больших преимуществ коллекций является то, что они улучшают производительность системы, кэшируя статические данные, к которым необходимо регулярно обращаться.
- Наиболее важно, что коллекции полезны при работе с большим набором данных, имеющим тот же тип данных, для которого пользователю необходимо выполнить несколько операций DML.
- Используя одну коллекционную переменную, мы можем уменьшить количество переменных, используемых для хранения разных значений и, следовательно, для экономии памяти.
- Выполнение различных операций, таких как хранение и обработка данных, становится простым благодаря уже предоставленным методам сбора PL / SQL.
Вывод
С помощью приведенного выше описания вы можете получить представление о том, что такое коллекция PL / SQL, и о методах, которые можно использовать в коллекциях PL / SQL. Прежде чем использовать любой тип коллекции PL / SQL в программе, разработчик должен сначала тщательно продумать сценарий, прежде чем выбирать какой-либо тип. Хотя работать в коллекциях PL / SQL несложно, но в разные моменты могут возникать определенные исключения, о которых программист должен знать и знать, как с ними обращаться.
Рекомендуемые статьи
Это руководство к коллекциям PL / SQL. Здесь мы обсуждаем синтаксис, типы, методы и исключения коллекций PL / SQL вместе с преимуществами. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Курсоры в PL / SQL
- Оператор CASE в PL / SQL
- Oracle PL / SQL Интервью Вопросы
- Команды PL / SQL