sql >> Databasteknik >  >> RDS >> Oracle

Insamlingsmetod:COUNT-funktion i Oracle Database

Jag nämnde i föregående handledning att det finns 7 samlingsfunktioner. Bland dessa sju samlingsfunktioner – COUNT ( ) är den första som vi ska utforska i den här handledningen. Om du följer denna serie av PL/SQL Collection måste du redan ha stött på den här samlingsfunktionen. Men från och med idag har vi dedikerat en fullständig blogg till detta ämne, så vi tar oss friheten och utforskar insamlingsmetoden COUNT ( ) i detalj.

Vad är ANTAL insamlingsmetod ( )?

Samlingsmetod COUNT ( ) returnerar antalet element i en initialiseringssamling. Om den används med en initialiseringssamling utan element; den returnerar noll.

Förvirrad! Varför betecknar vi insamlingsfunktioner och -procedurer som insamlingsmetod? Läs Introduktion till insamlingsmetoder för att ta reda på svaret.

När returnerar insamlingsmetod COUNT ( ) noll?

Insamlingsmetoden COUNT ( ) returnerar noll när den tillämpas eller säg används med en initialiseringssamling (dvs. VARRAYs &kapslade tabeller) utan element. Den returnerar också noll som ett resultat när den används med en tom associerad array.

Signatur för insamlingsmetod COUNT ( )?

Signaturen för funktionen COUNT är –

FUNCTION COUNT RETURN PLS_INTEGER;

Föreslagen läsning:PL/SQL-funktioner

Fungerar insamlingsmetoden COUNT ( ) på samma sätt med en kapslad tabell?

Nej. Detta beror på att COUNT ( ), returnerar antalet icke-tomma element i en kapslad tabell eftersom det är möjligt för en kapslad samlingstabell att ha enskilda element som är tomma.

Varför fan får jag felet "Collection_IS_NULL"?

Det verkar som att du använder COUNT ( ) med en oinitierad samling. När du använder insamlingsfunktionen COUNT ( ) på en oinitierad samling (d.v.s. kapslade tabeller och VARRAYs) uppstår undantaget 'Collection_Is_Null' som är ett fördefinierat undantag i Oracle Database.

Eftersom associativa arrayer inte kräver initiering kommer du inte att få detta undantag med dem. Du kan läsa mer om associativa arrayer här.

Exempel på ANTAL insamlingsmetod ( )

Exempel 1:Beräkna det totala antalet element lagrade i en kapslad tabell.

Du kan använda funktionen COUNT ( ) för att beräkna det totala antalet element som lagrats i en samling, t.ex. kapslad tabell.

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 ('The Size of the Nested Table is ' ||var_nt.count);
END;
/

Varsågod; kopiera och klistra in ovanstående kod i din IDE och se resultatet.

Exempel 2. COUNT ( ) funktion med OM-villkor

Du kan använda COUNT ( )-funktionen för att styra programmets flöde med hjälp av ett villkor. Så låt oss skriva ett mycket enkelt program som visar hur man använder insamlingsmetoden COUNT ( ) med IF-villkor.

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
    IF var_nt.count >= 10 THEN
        DBMS_OUTPUT.PUT_LINE (‘you have already inserted 10 elements in your Nested table.');
        DBMS_OUTPUT.PUT_LINE ('Are you sure you want to insert more?');
    END IF;
END;
/

På samma sätt kan du använda insamlingsmetoden COUNT ( ) med loopar. Du kan titta på PL/SQL-handledningen om samma ämne för att lära dig att göra det. Du hittar videon här.

Det är en mycket enkel demonstration. Jag är säker på att du kan komma med några galnare exempel. Så vad väntar du på, fortsätt och skriv din kod och se på vilka andra möjliga sätt du kan använda den här metoden.

Om du vill att jag ska granska din kod kan du dela din kod med mig på min Facebook-sida eller på min Twitter också.

Hur gillar du den här bloggen? Är det något du vill att vi ska förbättra? Berätta för oss vad du känner på vår Facebook-sida och på vår Twitter.

Tack och ha en bra dag!


  1. Hur man ställer in varje objekt som hämtas från SQLite-databasen till en egen textvy

  2. De tre bästa tipsen du behöver veta för att skriva snabbare SQL-vyer

  3. Aggregera funktion över ett givet tidsintervall

  4. Hur man använder UTF-8 Collation i SQL Server-databas?