Oracle
 sql >> база данни >  >> RDS >> Oracle

PL/SQL колекция:Вложена таблица в базата данни на Oracle

Как да създадете вложена таблица вътре в PL/SQL блок

Добре дошли във втория урок от серията PL/SQL Collection. В този урок ще научим първия тип колекция, която е „вложена таблица“. Таблица вътре в таблица е най-простата дефиниция, която човек може да измисли и е правилна във всяко едно отношение, защото таблица, която е вградена в друга таблица, е точно това, което подсказва името на вложена таблица.

Но ако трябва да дефинираме колекцията „Вложена таблица“ по по-изискан и технически начин, тогава можем да кажем, че вложените таблици са едномерни структури, които са постоянни и неограничени по природа. Те са достъпни в SQL, както и в PL/SQL и могат да се използват в таблици, записи и дефиниции на обекти. Тъй като това е неограничена PL/SQL колекция, следователно може да съдържа произволен брой елементи в произволно подреден набор.

Определение
Вложените таблици са едномерни структури, които са постоянни и неограничени по природа. Те са достъпни в SQL, както и в PL/SQL и могат да се използват в таблици, записи и дефиниции на обекти. Тъй като това е неограничена PL/SQL колекция, следователно може да съдържа произволен брой елементи в неподреден набор.

Препоръка за четене:Въведение в колекцията PL/SQL

Вложена таблица може да бъде създадена вътре в блока PL/SQL или в базата данни като обект от тип колекция (обект на схема). В случай на предишната вложена таблица се държи като едномерен масив без никакъв тип индекс или горна граница.

Така че за момента нека се концентрираме върху това как да създадем вложена таблица в PL/SQL блока и да оставим останалото за следващия урок.

Синтаксис за създаване на вложена таблица

DECLRE 
TYPE nested_table_name IS TABLE OF element_type [NOT NULL];

Обясних този синтаксис подробно в моя видео урок в моя канал в YouTube. Силно препоръчвам да прегледате този видеоклип.

Пример:Как да създадете вложена таблица в PL/SQL блок?

Следващият пример е само за демонстриране как се създава вложена таблица, няма нищо фантастично в това.

SET SERVEROUTPUT ON;
DECLARE
   TYPE my_nested_table   IS TABLE OF number;
    var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
BEGIN
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 1 in NT is ' ||var_nt (1)); 
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 2 in NT is ' ||var_nt (2));
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 3 in NT is ' ||var_nt (3));
END;
 /

Примерът по-горе е много прост, в който създадохме вложена таблица и я нарекохме „my_nested_table“ (ред номер 3). В следващия ред (ред номер 4) създадохме екземпляр на същата колекция и я използвахме, за да инициализираме вложената таблица и да съхраняваме някои данни в нея. В секцията за изпълнение имаме достъп до съхранените данни поотделно, използвайки индексния номер, по същия начин, по който правехме в масивите.

Вместо ръчен достъп до данни един по един, използвайки индекс, можем да използваме цикли и да преминаваме през всеки елемент от вложената таблица на колекцията.

 SET SERVEROUTPUT ON;
 DECLARE
   TYPE my_nested_table   IS TABLE OF number;
   var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
 BEGIN
   FOR i IN 1..var_nt.COUNT
   LOOP
     DBMS_OUTPUT.PUT_LINE ('Value stored at index '||i||'is '||var_nt(i));
   END LOOP;
 END;
 /

Това е друг пример за това как да създадем вложена таблица, в която преминаваме през данните и ги показваме обратно на потребителя с помощта на For Loop.

Това е всичко за това как да създавате вложени таблици в PL/SQL блокове. Останете на линия, тъй като в следващия урок ще научим как да създаваме вложени таблици като обекти за събиране на база данни и какви всички изгледи на речник с данни можете да използвате, за да получите информацията за вложените таблици, които се съхраняват във вашата база данни.

Това е всичко. Благодаря за четенето и приятен ден!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика между функция на таблица и конвейерна функция?

  2. oracle по-бързо пейджинг заявка

  3. XML таблица с Oracle 11g

  4. Използване на функцията Oracle to_date за низ от дата с милисекунди

  5. Тип на Java за дата/час, когато използвате Oracle Date с Hibernate