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

Metodo di raccolta:funzione COUNT nel database Oracle

Ho menzionato nel tutorial precedente che ci sono 7 funzioni di raccolta. Tra queste sette funzioni di raccolta, COUNT ( ) è la prima che esploreremo in questo tutorial. Se stai seguendo questa serie di raccolte PL/SQL, devi esserti già imbattuto in questa funzione di raccolta. Ma da oggi abbiamo dedicato un blog completo a questo argomento, quindi ci prenderemo la libertà ed esploreremo in dettaglio il metodo di raccolta COUNT ( ).

Che cos'è il metodo di raccolta COUNT ( )?

Metodo di raccolta COUNT ( ) restituisce il numero di elementi in una raccolta inizializzata. Se utilizzato con una raccolta inizializza senza elementi; restituisce zero.

Confuso! Perché indichiamo le funzioni e le procedure di raccolta come Metodo di raccolta? Leggi Introduzione alla raccolta Metodi per scoprire la risposta.

Quando il metodo di raccolta COUNT ( ) restituisce zero?

Il metodo di raccolta COUNT ( ) restituisce zero quando viene applicato o utilizzato con una raccolta inizializzata (ad esempio VARRAY e tabelle nidificate) senza elementi. Di conseguenza, restituisce zero anche quando viene utilizzato con un array associato vuoto.

Firma del metodo di raccolta COUNT ( )?

La firma della funzione COUNT è –

FUNCTION COUNT RETURN PLS_INTEGER;

Lettura consigliata:funzioni PL/SQL

Il metodo di raccolta COUNT ( ) funziona allo stesso modo con una tabella nidificata?

No. Questo perché COUNT ( ), restituisce il numero di elementi non vuoti in una tabella nidificata poiché è possibile che una tabella nidificata della raccolta abbia singoli elementi vuoti.

Perché diavolo ricevo l'errore "Collection_IS_NULL"?

Sembra che tu stia utilizzando COUNT ( ) con una raccolta non inizializzata. Ogni volta che si applica la funzione di raccolta COUNT ( ) a una raccolta non inizializzata (ad es. Tabelle nidificate e VARRAY), viene sollevata l'eccezione "Collection_Is_Null", che è un'eccezione predefinita in Oracle Database.

Poiché gli array associativi non richiedono l'inizializzazione, quindi non otterrai questa eccezione con loro. Puoi leggere ulteriori informazioni sugli array associativi qui.

Esempi di metodo di raccolta COUNT ( )

Esempio 1:calcola il numero totale di elementi archiviati in una tabella nidificata.

Puoi utilizzare la funzione COUNT ( ) per calcolare il numero totale di elementi archiviati in una raccolta come la tabella nidificata.

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;
/

Andare avanti; copia e incolla il codice sopra nel tuo IDE e guarda il risultato.

Esempio 2. Funzione COUNT ( ) con condizione IF

È possibile utilizzare la funzione COUNT ( ) per controllare il flusso del programma utilizzando una condizione. Quindi scriviamo un programma molto semplice che dimostrerà come utilizzare il metodo di raccolta COUNT ( ) con IF Condition.

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;
/

Allo stesso modo puoi usare il metodo di raccolta COUNT ( ) con Loops. Puoi guardare il tutorial PL/SQL sullo stesso argomento per imparare a farlo. Puoi trovare il video qui.

Questa è una dimostrazione molto semplice. Sono sicuro che puoi venire con alcuni esempi più folli. Allora, cosa stai aspettando, vai avanti e scrivi il tuo codice e vedi in quali altri modi possibili puoi utilizzare questo metodo.

Se vuoi che esamini il tuo codice, puoi condividerlo con me sulla mia pagina Facebook o anche sul mio Twitter.

Ti piace questo blog? C'è qualcosa che vuoi che miglioriamo? Raccontaci cosa provi sulla nostra pagina Facebook e sul nostro Twitter.

Grazie e buona giornata!