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!