sql >> Database teknologi >  >> RDS >> Oracle

Indsamlingsmetode:UDVID Procedure i Oracle-databasen

Efter PL/SQL-indsamlingsmetoden DELETE, EXTEND-proceduren i Oracle-databasen er den anden på listen. Vi har brugt denne procedure igen og igen, men har aldrig fået chancen for at udforske den i detaljer. Derfor har jeg besluttet at dedikere hele bloggen til denne indsamlingsmetode. Så læn dig tilbage og nyd bloggen.

Hvis du er ny til PL/SQL og ikke ved, hvad der er procedurer, så har vi en tutorial til dig. Klik her og lær alt om PL/SQL-procedurer i Oracle Database.

Hvad er PL/SQL Collection Method EXTEND?

I lighed med DELETE er samlingsmetoden EXTEND en overbelastet PL/SQL-procedure, som bruges til at tilføje elementer til samlingen.

På hvor mange måder kan vi kalde EXTEND-proceduren i Oracle-databasen?

PL/SQL-indsamlingsprocedure er en overbelastet procedure. Derfor betyder det, at vi kalder denne samme procedure på forskellige måder. Disse forskellige måder at kalde indsamlingsprocedure EXEND på er –

  1. Udvid:Udvid procedurekald uden argumenter.

Kaldning af PL/SQL-indsamlingsprocedure Udvid uden argumenter tilføjes et enkelt NULL-element til samlingen.

  1. Udvid (n):Udvid procedurekald med ét argument.

Indsamlingsprocedure Udvid med ét argument vil tilføje antallet af NULL-elementer, som du nævnte som argumentet for proceduren . Men husk, at argumentet skal være en gyldig heltalsværdi.

  1. Udvid (n, v):Udvid procedurekald med to argumenter.

I dette tilfælde angiver det første argument antallet af elementer som vil blive vedhæftet samlingen. Desuden t det andet argument er indeksnummeret. Desuden vil dets værdi blive kopieret og tildelt hvert af de nyligt tilføjede elementer i samlingen. Denne form for EXTEND er påkrævet for samlinger med "ikke null-elementer".

Kan vi bruge PL/SQL Collection Method EXTEND med alle tre typer samlinger?

Nej, indsamlingsmetode EXTEND kan kun anvendes på indsamlingsindlejrede tabeller og VARRAY'er. Ydermere kan EXTEND ikke bruges med samling Associative Arrays.

Kan du vise os specifikationen af ​​proceduren for udvidelse af indsamlingsmetoden i Oracle-databasen?

Hvorfor ikke! Her er de overbelastede specifikationer for PL/SQL Collection Method EXTEND —

UDLÆG procedure med ét argument:

PROCEDURE EXTEND (n pls_integer := 1);

Indsamlingsmetode UDVID med to argumenter:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Hvornår skal vi bruge indsamlingsmetoden EXTEND i vores kode?

Når du har en samling (enten Nested Table eller VARRAY) i din kode, som ikke er initialiseret med tilstrækkeligt antal elementer. I så fald skal du først bruge PL/SQL Collection Method EXTEND.

Hvad er kravet til PL/SQL-indsamlingsmetode EXTEND?

Erklæring, Definition og Initialisering er de tre trin, som vi skal igennem, mens vi arbejder med indsamling i Oracle Database. Men før vi gemmer dataene i indekset, skal vi oprette en hukommelsesplads til det. Derfor hjælper PL/SQL-indsamlingsproceduren EXTEND os med at skabe den hukommelsesplads til disse data.

Hvad hvis vi har slettet eller beskåret slutningen af ​​samlingen?

I så fald vil PL/SQL Collection-metoden EXTEND springe de slettede elementer over, når den tildeler et nyt indeks.

Hvad hvis jeg anvender indsamlingsmetoden EXTEND på en ikke-initialiseret Nested tabel eller VARRAY?

Hvis PL/SQL Collection Method EXTEND anvendes på en ikke-initialiseret samling, vil den vise en COLLECTION_IS_NULL undtagelse.

Og hvad hvis jeg prøver at UDVIDE en VARRAY ud over dens definerede grænse?

Hvis indsamlingsmetoden EXTEND bruges sammen med VARRAY for at udvide den ud over dens definerede grænse, bliver du nødt til at stå over for en anden undtagelse, som er SUBSCRIPT_BEYOND_LIMIT.

Hej, Manish! Vil vi nogensinde se et eksempel på denne indsamlingsmetode EXTEND?

Ja, vi vil helt sikkert demonstrere hver af de PL/SQL-indsamlingsprocedurer EXTEND-kald, som vi nævnte ovenfor. Ud over forlængelse af procedureopkald med VARRAY.

1. PL/SQL-indsamlingsprocedure UDVID uden argumenter.

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. Indsamlingsprocedure UDVID med ét 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-indsamlingsprocedure UDVID med to argumenter.

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. Indsamlingsprocedure FORLÆNG (ingen argumentation) med 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;
/

Hver LOC af alle ovenstående (undtagen den 4) er forklaret i detaljer i videovejledningen på vores YouTube-kanal.

Håber vi har diskuteret alle de mulige spørgsmål om PL/SQL Collection Method EXTEND, som du kunne stå over for i din Oracle db-certificeringseksamen såvel som i dit interview. Hvis du har nogen forvirring om certificeringer, kan du også henvise til vores Oracle Database Certification Exam Guide.


  1. Postgres 9.1 vs Mysql 5.6 InnoDB?

  2. Find alle ikke-numeriske værdier i en kolonne i MariaDB

  3. JSON_QUERY() Eksempler i SQL Server (T-SQL)

  4. 7 fakta om SQL Server-synonymer, du bør kende