sql >> Database >  >> RDS >> Oracle

Verzamelmethode:VERLENG Procedure in Oracle Database

Na de PL/SQL-verzamelingsmethode DELETE, is de EXTEND-procedure in de Oracle-database de tweede op de lijst. We hebben deze procedure keer op keer gebruikt, maar hebben nooit de kans gekregen om het in detail te onderzoeken. Daarom heb ik besloten om de hele blog aan deze verzamelmethode te wijden. Dus leun achterover en geniet van de blog.

Als PL/SQL nieuw voor je is en niet weet wat Procedures zijn, hebben we een tutorial voor je. Klik hier en leer alles over PL/SQL-procedures in Oracle Database.

Wat is PL/SQL-verzamelmethode EXTEND?

Net als bij DELETE is de verzamelmethode EXTEND een overbelaste PL/SQL-procedure die wordt gebruikt om elementen aan de verzameling toe te voegen.

Op hoeveel manieren kunnen we de EXTEND-procedure in Oracle Database aanroepen?

De PL/SQL-verzamelprocedure is een overbelaste procedure. Daarom betekent dit dat we dezelfde procedure op verschillende manieren aanroepen. Deze verschillende manieren om Incassoprocedure EXTEND aan te roepen zijn –

  1. Verlengen:Verleng de procedureaanroep zonder enig argument.

Aanroepen van PL/SQL Verzamelingsprocedure Verlengen zonder enig argument zal toevoegen een enkel NULL-element naar de collectie.

  1. Verlengen (n):Verleng de procedureaanroep met één argument.

Verzamelprocedure Uitbreiden met één argument zal het aantal NULL-elementen toevoegen dat u hebt genoemd als het argument van de procedure . Maar onthoud dat het argument een geldige Integer-waarde moet zijn.

  1. Verlengen (n, v):Verleng de procedureaanroep met twee argumenten.

In dit geval geeft het eerste argument het aantal elementen aan die aan de collectie wordt toegevoegd. Bovendien t het tweede argument is het indexnummer. Bovendien wordt de waarde ervan gekopieerd en toegewezen aan elk van de nieuw toegevoegde elementen van de collectie. Deze vorm van EXTEND is vereist voor verzamelingen met "niet-null-elementen".

Kunnen we de PL/SQL-verzamelmethode EXTEND gebruiken met alle drie typen verzamelingen?

Nee, verzamelmethode EXTEND kan alleen worden toegepast op geneste tabellen en VARRAY's voor verzamelingen. Bovendien kan EXTEND niet worden gebruikt met verzamelings associatieve arrays.

Kun je ons de specificatie laten zien van de procedure Verzamelmethode EXTEND in Oracle Database?

Natuurlijk waarom niet! Hier zijn de overbelaste specificaties van PL/SQL Collection Method EXTEND —

EXTEND Procedure met één argument:

PROCEDURE EXTEND (n pls_integer := 1);

Verzamelingsmethode UITGEBREID met twee argumenten:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Wanneer moeten we de verzamelmethode EXTEND gebruiken in onze code?

Wanneer u een verzameling (geneste tabel of VARRAY) in uw code heeft die niet is geïnitialiseerd met voldoende aantal elementen. In dat geval moet u eerst de PL/SQL Collection Method EXTEND gebruiken.

Wat is de vereiste van PL/SQL-verzamelmethode EXTEND?

Declareren, definiëren en initialiseren zijn de drie stappen die we moeten doorlopen tijdens het werken met collectie in Oracle Database. Maar voordat we de gegevens in de index opslaan, moeten we er een geheugenslot voor maken. Bijgevolg helpt de PL/SQL-verzamelingsprocedure EXTEND ons bij het creëren van die geheugensleuf voor die gegevens.

Wat als we het einde van de verzameling hebben verwijderd of bijgesneden?

In dat geval zal de PL/SQL Collection-methode EXTEND de verwijderde elementen overslaan wanneer het een nieuwe index toewijst.

Wat als ik de verzamelmethode EXTEND toepas op een niet-geïnitialiseerde geneste tabel of VARRAY?

Als de PL/SQL-verzamelingsmethode EXTEND wordt toegepast op een niet-geïnitialiseerde verzameling, wordt een COLLECTION_IS_NULL weergegeven uitzondering.

En wat als ik een VARRAY probeer uit te breiden tot voorbij de gedefinieerde limiet?

Als de verzamelmethode EXTEND wordt gebruikt met VARRAY om deze uit te breiden tot voorbij de gedefinieerde limiet, dan zult u te maken krijgen met een andere uitzondering, namelijk SUBSCRIPT_BEYOND_LIMIT.

Hé, Manish! Zullen we ooit een voorbeeld zien van deze Verzamelmethode VERLENGEN?

Ja, we zullen zeker de demonstratie doen van elk van de PL/SQL Collection-procedure EXTEND-aanroep die we hierboven noemden. Naast het verlengen van een proceduregesprek met VARRAY.

1. PL/SQL-verzamelingsprocedure UITGEBREID zonder argument.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
END;
/

2. Verzamelprocedure VERLENG met één argument.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND(3);
    nt_obj(1) := 10;
    nt_obj(2) := 20;
    nt_obj(3) := 30;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); 
    DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3));
END;
/

3. PL/SQL-verzamelingsprocedure UITGEBREID met twee argumenten.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 28;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    nt_obj.EXTEND(5,1);
    DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4));
END;
/

4. Incassoprocedure VERLENGEN (geen argument) met VARRAY

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_Varray IS VARRAY (5) OF NUMBER;
    vry_obj my_Varray := my_Varray();
BEGIN
    vry_obj.EXTEND;
    vry_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1));
END;
/

Elke LOC van al het bovenstaande (behalve de 4e) wordt in detail uitgelegd in de video-tutorial op ons YouTube-kanaal.

Ik hoop dat we alle mogelijke vragen over PL/SQL Collection Method EXTEND hebben besproken die u kunt tegenkomen in uw Oracle db-certificeringsexamen en in uw interview. Als u enige verwarring heeft over certificeringen, kunt u onze Oracle Database Certification Exam Guide raadplegen.


  1. psql ongeldige opdracht \N while restore sql

  2. MySQL DROP UNIEKE BEPERKING

  3. Service Broker-verbeteringen in SQL Server 2016

  4. Inleiding tot PL/SQL Bulk Collect in Oracle Database