sql >> Database >  >> RDS >> Oracle

PL/SQL-verzameling:geneste tabel in Oracle-database

Hoe maak je een geneste tabel in PL/SQL-blok

Welkom bij de tweede tutorial van de PL/SQL Collection-serie. In deze zelfstudie leren we het eerste type verzameling dat "geneste tabel" is. Een tabel in een tabel is de eenvoudigste definitie die je kunt bedenken en het is in alle opzichten correct omdat een tabel die is ingesloten in een andere tabel precies is wat de naam geneste tabel suggereert.

Maar als we de collectie 'Nested table' op een meer fancy en technische manier moeten definiëren, dan kunnen we zeggen dat Geneste tabellen eendimensionale structuren zijn die persistent en onbegrensd van aard zijn. Ze zijn zowel in SQL als PL/SQL toegankelijk en kunnen worden gebruikt in tabellen, records en objectdefinities. Omdat het een onbegrensde PL/SQL-verzameling is, kan het een willekeurig aantal elementen in een willekeurig geordende set bevatten.

Definitie
Geneste tabellen zijn eendimensionale structuren die persistent en onbegrensd van aard zijn. Ze zijn zowel in SQL als PL/SQL toegankelijk en kunnen worden gebruikt in tabellen, records en objectdefinities. Omdat het een onbegrensde PL/SQL-verzameling is, kan het een willekeurig aantal elementen in een ongeordende set bevatten.

Leesadvies:Inleiding tot de PL/SQL-collectie

Een geneste tabel kan worden gemaakt binnen het PL/SQL-blok of in de database als een verzamelingstype-object (Schema-object). In het geval dat de vorige geneste tabel zich gedraagt ​​als een eendimensionale array zonder enig indextype of enige bovengrens.

Laten we ons dus voorlopig concentreren op het maken van een geneste tabel in het PL/SQL-blok en de rest overlaten aan de volgende zelfstudie.

Syntaxis voor het maken van geneste tabel

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

Ik heb deze syntaxis in detail uitgelegd in mijn videozelfstudie op mijn YouTube-kanaal. Ik raad je ten zeerste aan om naar die video te verwijzen.

Voorbeeld:hoe maak je een geneste tabel in een PL/SQL-blok?

Het volgende voorbeeld is alleen bedoeld om te demonstreren hoe u een geneste tabel maakt, er is niets speciaals aan.

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;
 /

Bovenstaand voorbeeld is een heel eenvoudige waarin we een geneste tabel hebben gemaakt en deze 'my_nested_table' hebben genoemd (regelnummer 3). In de volgende regel (regel nummer 4) hebben we een instantie van dezelfde verzameling gemaakt en deze gebruikt om de geneste tabel te initialiseren en er wat gegevens in op te slaan. In de uitvoeringssectie hebben we individueel toegang tot de opgeslagen gegevens met behulp van het indexnummer, op dezelfde manier als vroeger in arrays.

In plaats van gegevens één voor één handmatig te openen met behulp van index, kunnen we lussen gebruiken en door elk element van de geneste tabel van de verzameling bladeren.

 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;
 /

Dat is nog een voorbeeld van hoe we een geneste tabel kunnen maken waarin we door de gegevens bladeren en deze weer aan de gebruiker tonen met For Loop.

Dat is het over het maken van geneste tabellen in PL/SQL-blokken. Blijf op de hoogte, want in de volgende zelfstudie zullen we leren hoe u geneste tabellen kunt maken als databaseverzamelingsobjecten en welke weergaven van de datadictionary u kunt gebruiken om de informatie te krijgen van de geneste tabellen die in uw database zijn opgeslagen.

Dat is alles. Bedankt voor het lezen en een fijne dag verder!


  1. Hoe te rangschikken over partitie in MySQL

  2. De landinstelling instellen voor de huidige verbinding in MySQL

  3. Een overzicht van JSON-mogelijkheden binnen PostgreSQL

  4. Wanneer het dringend is?