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

Indsamlingsmetode:LIMIT-funktion i Oracle-databasen

Dagens PL/SQL tutorial handler om Collection Method LIMIT. Vi har allerede set 4 funktioner i denne serie af indsamlingsmetoder, som er – Count, Exists, First og Last. Limit er den femte funktion, som vi skal lære i dag.

Hvad er indsamlingsmetode LIMIT?

Opsamlingsmetode LIMIT, som faktisk er en PL/SQL-funktion, returnerer det maksimale antal elementer, som en VARRAY kan indeholde. Det betyder, at du ved at bruge denne funktion kan finde ud af, hvor mange elementer du kan gemme i en VARRAY.

Hvad returnerer indsamlingsmetoden LIMIT?

Indsamlingsmetode LIMIT returnerer en værdi af typen PLS_INTEGER?

Virker denne funktion også med andre to samlinger Nested Tables og Associative Array?

Indsamlingsmetode LIMIT virker kun med VARRAY. Hvis den anvendes på indlejret tabel eller associativ array, vil denne funktion enten returnere en NULL- eller No-værdi. Så svaret er, nej, indsamlingsfunktionen LIMIT virker ikke med indlejrede tabeller og associative arrays.

Hvad er specifikationen for indsamlingsfunktionen LIMIT?

Specifikationen af ​​indsamlingsfunktionen LIMIT er:

FUNCTION LIMIT RETURN pls_integer;

Rejser indsamlingsfunktionen LIMIT nogen undtagelse? Hvis ja, hvornår så?

Ja, funktionen LIMIT rejser COLLECTION_IS_NULL undtagelse, hvis den anvendes på en ikke-initialiseret indlejret tabel eller en VARRAY.

Kan du vise os et eksempel på, hvordan man bruger funktionen LIMIT?

Hvorfor ikke. Her er et meget simpelt eksempel, der viser, hvordan man korrekt bruger indsamlingsfunktionen LIMIT med VARRAY'er.

SET SERVEROUTPUT ON;
DECLARE
    TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
    vry_obj inBlock_vry := inBlock_vry();
BEGIN
 --Let's find out total number of indexes in the above VARRAY
    DBMS_OUTPUT.PUT_LINE ('Total Indexes '||vry_obj.LIMIT);
END;
/

Har vi ikke funktionen COUNT, som giver de samme oplysninger?

Indsamlingsfunktionen LIMIT returnerer det samlede antal indekser for en VARRAY uanset om disse indekser er tomme eller indeholder nogle data . Den kontrollerer definitionen af ​​VARRAY og ser det samlede antal elementer, den er designet til at gemme og returnerer dette nummer.

Mens indsamlingsfunktionen COUNT returnerer antallet af indekser, som er ikke tomme og holder nogle data .

Tag et kig på dette PL/SQL-program. Dette vil hjælpe dig med at forstå forskellen mellem indsamlingsmetoden COUNT og LIMIT mere tydeligt.

SET SERVEROUTPUT ON;
DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    	vry_obj.extend;
    	vry_obj(1) := 10 * 2; 
dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
END;
/

I ovenstående kode har vi en VARRAY, som er i stand til at indeholde 5 elementer af NUMBER datatype. I udførelsessektionen har vi to DBMS-outputsætninger. Den første output-sætning, som viser resultatet af LIMIT-funktionen, vil returnere 5, fordi det er den samlede styrke af vores VARRAY, mens den anden output-sætning vil returnere 1, fordi der blandt disse 5 indekser kun er ét indeks, som har nogle data gemt i sig.

Du sagde i videoen, at du vil vise oshvordan man finder ud af det samlede antal elementer, der ikke er brugt, så vi kan gemme data i en varray ved hjælp af indsamlingsmetoden LIMIT?

Er det rigtigt? Har jeg sagt det? Jeg laver bare sjov.

Det er meget nemt at finde ud af antallet af ledige indeks til din brug i en VARRAY. Lad mig fortælle dig hvordan.

Som jeg sagde ovenfor returnerer indsamlingsfunktionen COUNT antallet af indekser, som har data gemt i dem, og indsamlingsfunktionen LIMIT returnerer det samlede antal indekser, som en VARRAY kan rumme.

Hvis du trækker resultatet af tællefunktionen fra resultatet af LIMIT-funktionen, får du det samlede antal elementer, der ikke er brugt, så du kan gemme data i en varray. For eksempel

DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    vry_obj.extend;
    vry_obj(1) := 10 * 2;
    dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
    dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
    dbms_output.put_line('Total Number of Vacant index left for use '
                            || (vry_obj.limit - vry_obj.count) );
END;
/

Det er PL/SQL-tutorialen, der besvarer alle de spørgsmål, du kan forvente i certificeringseksamen såvel som i dit interview om indsamlingsmetode LIMIT i Oracle-databasen.

Er der noget, jeg har glemt at dække eller nævne i denne tutorial? Hvis ja, så lad mig venligst. Skriv til mig på min Twitter eller Facebook.

Tak for en god dag.


  1. Grænse for tilstanden WHERE col IN (...).

  2. Hvordan overføres tabelværdiparametre fra Java til sql server lagret procedure?

  3. Bestil ved at bruge en parameter for kolonnenavnet

  4. Lagring af UTF-16/Unicode-data i SQL Server