El tipo de dato colección del PL/SQL (PLSQL collection datatype)

En Oracle una “colección” PL/SQL (PLSQL collection) es un tipo de datos compuesto consistente en una matriz de una sola dimensión que está compuesta por uno o más elementos accesibles a través de un índice.

Los datos de tipo colección se utilizan en algunas de las más importantes funcionalidades del PL/SQL asociadas con la optimización del rendimiento de las bases de datos Oracle tales como:
FORALL: dentro de los cuales se incluyen sentencias INSERT, UPDATE y DELETE que utilizan colecciones para cambiar múltiples registros de datos de una manera muy rápida.
BULL COLLECT: sentencias SELECT que devuelven múltiples registros en una simple extracción, incrementando notablemente la velocidad de la consulta.
Funciones de tipo tabla: funciones PLSQL que devuelven datos de tipo colección y que pueden utilizarse en la cláusula FROM de una sentencia SELECT.

Las colecciones también se pueden utilizar para trabajar en nuestros programas con listas de datos que no está almacenados en tablas de las base de datos Oracle.

Conceptos básicos y terminología del tipo de dato colección

Antes de empezar a explorar este tipo de dato del PLSQL, resulta conveniente conocer el vocabulario y la terminología que se utiliza al manejar las colecciones y que incluye los siguientes términos:
Valor índice: indica la localización de un dato en una colección. Normalmente son números enteros pero para algunos tipos de colección pueden ser también cadenas de caracteres.
Elementos: son los datos almacenados bajo un valor de índice específico. Los elementos en una colección son siempre del mismo tipo (todos ellos serán cadenas de caracteres, fechas o registros). Las colecciones PL/SQL están constituidas por datos homogéneos.
Dispersión: una colección se dice dispersa si hay al menos un valor del índice entre el valor más bajo y el más alto del mismo que no está definido. Por ejemplo, una colección es dispersa si tiene un elemento asignado para el índice 1 y otro para el índice 5 pero no existe ningún elemento entre ambos índices. Lo contrario a una colección dispersa es una colección densa.
Método: el método de una colección es un procedimiento o función que o proporciona información sobre la colección o cambia el contenido de la misma. Los métodos se asocian a las colecciones mediante el separador punto (utilizando la sintaxis del lenguaje orientado a objetos), un ejemplo sería mi_coleccion.PRIMER_METODO.

Tipos de colecciones

Las colecciones fueron introducidas por primera vez en la versión 7 de Oracle y desde entonces han ido evolucionando y mejorando a medida que han ido surgiendo nuevas versiones de la base de dato Oracle. Actualmente existen tres tipos de colecciones diferentes, cada una con sus propias características:
Matriz asociativa: fue el primer tipo de colección disponible en PLSQL al que originalmente se le denominó “tabla PL/SQL” y sólo puede utilizarse en bloques PLSQL. Las matrices asociativas pueden ser dispersas o densas y pueden indexarse por enteros o cadenas de caracteres.
Tablas anidadas: aparecieron en la versión 8 de la base de datos Oracle. Las tablas anidadas pueden utilizarse en bloques PL/SQL, en sentencias SQL y como tipo de dato para la columna de una tabla. Aunque las tablas anidadas pueden ser dispersas, casi siempre serán densas. Pueden indexarse exclusivamente por enteros. Es posible utilizar el operador MULTISET para realizar operaciones y comparaciones sobre el conjunto de todos los datos.
Varray (matrices de tamaño variable): añadidas también en la versión 8 de la base de datos Oracle. Las varray o matrices de tamaño variable pueden utilizarse en bloques PL/SQL, en sentencias SQL y como tipo de dato para la columna de una tabla. Las varrays son siempre densas e indexadas por enteros. Cuando se define un varray se debe especificar el máximo número de elementos permitidos en la colección.

Viendo las definiciones anteriores es fácil concluir que raramente necesitaremos utilizar un varray, ya que será bastante poco frecuente conocer el máximo número de elementos que podrá llegar a tener nuestra colección.

También podemos decir que la matriz asociativa es el tipo de colección más comúnmente utilizado, pero las tablas anidadas, al permitir el empleo del operador MULTISET, están dotadas de una funcionalidad única y muy potente que puede simplificar notablemente el código PL/SQL a escribir cuando empleamos una colección.

Ejemplo de tabla anidada

Empezaré por mostraros un sencillo ejemplo en el que se introducen muchos aspectos de las colecciones que posteriormente exploraremos más extensamente en otros artículos que pienso escribir.

DECLARE
TYPE nombres_t IS TABLE OF VARCHAR2 (100);
empleados nombres_t := nombres_t ();
en_oficinas nombres_t := nombres_t ();
en_talleres nombres_t := nombres_t ();
BEGIN
empleados.EXTEND (4);
empleados (1) := 'Pedro';
empleados (2) := 'Elena';
empleados (3) := 'Teresita';
empleados (4) := 'Juan';
en_oficinas.EXTEND;
en_oficinas (en_oficinas.LAST) := 'Elena';
en_oficinas.EXTEND;
en_oficinas (en_oficinas.LAST) := 'Juan';
en_talleres := empleados MULTISET EXCEPT en_oficinas;
FOR l_row IN 1 .. en_talleres.COUNT
LOOP
DBMS_OUTPUT.put_line (en_talleres (l_row));
END LOOP;
END;

Al ejecutar el código ejemplo, obtendremos la siguiente salida:

Pedro
Teresita

En el código ejemplo podéis ver como hemos inicializado la colección empleados con cuatro registros. Luego hemos utilizado dos de esos registros para crear dos elementos en la colección en_oficinas. Posteriormente hemos inicializado la colección en_talleres con todos los elementos de la colección empleados que no están en la colección en_oficinas utilizando el operador MULTISET. Y finalmente hemos sacado por pantalla los elementos de la colección en_talleres.

Quedan todavía por mencionar muchos aspectos básicos sobre el manejo de colecciones (inicialización, actualización, iteración, borrado, etcétera), pero estos temas serán objeto de artículos posteriores.

192 comentarios en “El tipo de dato colección del PL/SQL (PLSQL collection datatype)”

  1. I am not sure where you’re getting your information, but great topic.
    I needs to spend some time learning much more or
    understanding more. Thanks for magnificent info I was looking for this info
    for my mission.

  2. Do you have a spam issue on this website; I also am a blogger, and I was wanting to know your situation;
    we have developed some nice procedures and we are looking to trade strategies with
    others, be sure to shoot me an email if interested.

  3. Срочно нужны были деньги, решил продать свою Audi. В поисковике Яндекс я нашел skupkavto.ru. Приятно удивлен: машина ушла по хорошей цене, все оформили быстро, деньги сразу получил.

  4. brillx casino
    Brillx
    Brillx Казино – это не просто обычное место для игры, это настоящий храм удачи. Вас ждет множество возможностей, чтобы испытать азарт в его самой изысканной форме. Будь то блеск и огонь аппаратов или адреналин в жилах от ставок на деньги, наш сайт предоставляет все это и даже больше.Brillx Казино — это место, где сливаются воедино элегантность и бесконечные возможности. Необычная комбинация азартных игр и роскошной атмосферы позволит вам окунуться в мир бриллиантового веселья. Наше бриллиантовое казино уверенно входит в число лидеров азартной индустрии, и в этом году мы готовы порадовать вас еще большим разнообразием игр и выигрышей.

  5. Откройте для себя уникальный комфорт угг от UGG Australia. Акция позволяет купить УГГИ по привлекательным ценам. Не упустите шанс обогатить свой гардероб стильной обувью.

    Сайт: uggaustralia-msk.ru
    Адрес: Москва, 117449, улица Винокурова, 4к1

  6. Ожидая следующей зарплаты, я столкнулась с неожиданными медицинскими расходами. cntbank.ru предложил множество вариантов займов, и благодаря акции «займ без процентов» я смогла быстро решить финансовые вопросы без ущерба для бюджета.

  7. В преддверии праздников я понял, что не хватает денег на подарки для семьи. Сайт cntbank.ru предложил мне идеальное решение – срочный займ на карту. Я сразу же оформил заявку, и мне быстро одобрили займ. Так я смог порадовать своих близких замечательными подарками.

  8. Если вам близка тематика войны, чести и героизма, военные турецкие сериалы — ваш выбор. Откройте для себя мир, где каждое действие имеет значение, и каждый выбор может стать роковым. Эти сериалы полны адреналина, динамичных сцен и непредсказуемых исходов. Здесь нет места для слабых, только сильные духом найдут своё место под солнцем. Не упустите шанс погрузиться в этот захватывающий мир!

  9. Изучаете турецкий язык или просто хотите насладиться качественным кинематографом? В любом случае, турецкие сериалы на русском — идеальный вариант для вас. У нас вы найдете огромный каталог сериалов, переведенных на русский язык. От драмы и мелодрамы до комедий и боевиков — у нас есть все, чтобы удовлетворить ваш кинематографический аппетит. Не теряйте времени на поиски — все, что вам нужно, уже здесь. Больше не нужно ждать перевода — просто выбирайте и смотрите.

  10. В мире постоянных изменений финансовая гибкость становится ключевым фактором. Сервисы, предоставляющие круглосуточные займы на кредитную карту, позволяют вам получать необходимые средства в любое время дня и ночи. Это особенно удобно для тех, кто работает до поздна или же тех, кому срочно понадобились деньги вне рабочего времени банков.

  11. Не так давно мой друг оказался в затруднительном положении, когда ему отказали в кредите из-за неблагоприятной кредитной истории. Но он нашел выход, обратившись за займ на карту с любой историей. Я был поражен, насколько легко и просто он смог получить финансовую помощь, несмотря на все свои прошлые проблемы с банками. Это доказывает, что всегда есть возможности для тех, кто готов их искать. Если вы находитесь в ситуации, когда кажется, что все двери закрыты, не отчаивайтесь — есть сервисы, готовые помочь вам в любой жизненной ситуации.

  12. Чтобы достичь высоких позиций в Яндексе, важно сосредоточиться на сео продвижение гугл . Это означает не только внедрение ключевых слов и оптимизацию контента, но и улучшение пользовательского опыта, скорости загрузки сайта и мобильной адаптации. Все эти факторы важны для успешного SEO.

  13. На МИР-ЗАЙМОВ.РФ вы найдете эксклюзивные предложения от лучших МФК. Одним из таких предложений являются займы без процентов на 30 дней. Не упустите возможность воспользоваться этой выгодой!

  14. В тот дождливый вечер, когда все казалось потерянным, и мне срочно требовались деньги, я нашел свет в конце тоннеля. Сайт wikizaim.ru стал моим спасателем в море финансовых бурь. Взять займ онлайн на карту без отказа – эти слова звучали как музыка для моих ушей. Быстро, просто, и без лишних вопросов – я получил нужные средства, чтобы встретить утро с новыми надеждами.

  15. Недавно я оказался в сложной ситуации, когда срочно понадобились деньги. Друзья посоветовали мне поискать займы онлайн без отказа на сайте wikizaim.ru. Я был удивлен, насколько это было просто и быстро. Всего за несколько минут я оформил заявку и получил нужную сумму на карту. Спасибо wikizaim.ru за быстрое решение моей финансовой проблемы!

  16. Срочно нужны деньги, и не хотите сталкиваться с отказами? Наши срочные займы без отказа на сайте wikizaim.ru – ваш надежный выход!

    Мы сотрудничаем с надежными МФО, которые готовы одобрить вашу заявку в кратчайшие сроки. Не теряйте времени на бесконечные ожидания и заполнение бумажек. Оформите заявку онлайн, и вы получите ответ моментально.

    С нашей помощью вы сможете решить срочные финансовые вопросы без лишних затрат времени. У нас выгодные условия и конкурентоспособные процентные ставки. Получите займ срочно без отказа на wikizaim.ru и решите свои финансовые проблемы немедленно!

  17. Нужны деньги немедленно, и вы ищете способ получить займ онлайн без лишних отказов? На сайте wikizaim.ru вы найдете предложения, которые помогут вам решить срочные финансовые задачи без задержек.

    Наши партнеры готовы рассмотреть вашу заявку быстро и эффективно. Оформите заявку онлайн, и вы получите решение в кратчайшие сроки.

    Мы ценим ваше время и предоставляем условия займа, которые удовлетворяют ваши потребности. Забудьте о бесконечных очередях и бумажной волоките – wikizaim.ru делает процесс получения займа онлайн срочно и без отказа максимально простым и удобным.

    Не упустите возможность решить свои финансовые проблемы с нами. Оформите займ онлайн срочно без отказа на wikizaim.ru и получите нужные средства быстро и надежно!

  18. В поисках чего-то особенного для разнообразия своей личной жизни, я обратился к sladkiye-strasti.ru и был удивлён количеством интересных предложений. Особенно привлекли моё внимание товары для взрослых , которые оказались именно тем, что я искал. Впечатляет уровень сервиса и анонимность доставки, что немаловажно для таких покупок.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *