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

Dichiarazione FORALL con limite inferiore e superiore nel database Oracle

Dichiarazione FORALL con clausola di limite inferiore e superiore

Nel tutorial precedente abbiamo appreso che ci sono tre clausole vincolate che possiamo usare con l'istruzione FORALL per ottimizzare le query DML. Da queste tre clausole vincolate esploreremo la prima, ovvero Lower e Upper Bound in questo tutorial.

Che cos'è la clausola Lower &Upper Bound dell'istruzione FORALL?

Come suggerisce il nome, con la clausola Lower &Upper Bound dobbiamo specificare l'intervallo valido di numeri indice consecutivi della collezione.

Esiste una regola per l'utilizzo della clausola Lower &Upper Bound con l'istruzione FORALL?

La clausola Lower &Upper Bound può essere utilizzata solo quando la raccolta a cui fai riferimento nella tua dichiarazione DML è Dense . Se la raccolta di riferimenti è scarsa, potresti voler utilizzare altre clausole vincolate di cui parleremo nei tutorial futuri.

Per eseguire correttamente il tuo programma devi assicurarti di aver seguito tutte le regole dell'istruzione FORALL insieme alla regola sopra menzionata della clausola Lower &Upper bound. Ulteriori informazioni sulla dichiarazione FORALL qui.

Facciamo un esempio di istruzione FORALL con clausola Lower &Upper Bound in Oracle Database.

Ma prima di saltare sull'esempio dobbiamo capire una cosa; L'istruzione FORALL fa lo stesso lavoro della clausola di raccolta in blocco, ma in modo inverso. Ad esempio, con la raccolta in blocco stavamo recuperando i dati dalle tabelle e archiviandoli nella raccolta, ma ora con l'istruzione FORALL recupereremo i dati dalla raccolta e li memorizzeremo nella tabella.

In questa dimostrazione faremo tre cose per comprendere il concetto di istruzione FORALL con clausola Lower &Upper Bound. Queste tre cose sono:

  1. Crea una tabella.

Per prima cosa creeremo una tabella. Useremo questa tabella per scaricare i dati che recupereremo dalla raccolta.

  1. Crea e popola la raccolta.

Questo passaggio è facoltativo se hai già una raccolta con alcuni dati. Se non lo fai, seguimi. Per la dimostrazione creerò e popolerò una raccolta.

  1. Scrivi la dichiarazione FORALL.

Una volta che hai il tuo tavolo e la tua collezione pronti, scrivi la dichiarazione FORALL. Per la dimostrazione scriverò un'istruzione FORALL che preleverà i dati dalla raccolta e li memorizzerà nella tabella. Sarà anche una dimostrazione dell'istruzione FORALL con INSERT DML.

Facciamo l'esempio dell'istruzione PL/SQL FORALL con limite inferiore e superiore.

SET SERVEROUTPUT ON;
CREATE TABLE tut_77 (
    Mul_tab    NUMBER(5)
);

Quella sarà la nostra tabella che conterrà i dati. Successivamente scriveremo il blocco PL/SQL.

DECLARE
	-- Declare the collection
    TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
    col_var My_Array;
	--Declare a variable for holding the total number of records of the table
    tot_rec NUMBER;
BEGIN
    --Populate the collection
    FOR i IN 1..10 LOOP
        col_var (i) := 9*i;
    END LOOP;
    -- Write the FORALL statement.
    FORALL idx IN 1..10
        INSERT INTO tut_77 (mul_tab)
        VALUES (col_var (idx));
    --Get the total number of records from the table     
    SELECT count (*) INTO tot_rec FROM tut_77;
    DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec);
END;
/

Spiegazione della sezione sulla dichiarazione

Nella sezione dichiarazione di questo codice abbiamo dichiarato un array associativo con il nome "my_Array" insieme alla sua variabile di raccolta. Anche una variabile aggiuntiva con il nome tot_rec del tipo di dati Numero. Questa variabile conterrà il numero totale di record archiviati nella nostra tabella.

Nella sezione di esecuzione abbiamo svolto tre attività. In primo luogo, utilizzando il ciclo FOR abbiamo popolato la nostra raccolta con la tabella di moltiplicazione di 9. In secondo luogo, utilizzando l'istruzione FORALL abbiamo preso i dati dalla raccolta e li abbiamo archiviati nella tabella che abbiamo creato. In terzo luogo, utilizzando la variabile tot_rec con l'istruzione SELECT-INTO abbiamo visualizzato il numero totale di righe memorizzate nella tabella.

Ho anche fatto un video sullo stesso argomento in cui ho spiegato in dettaglio questo codice sopra riga per riga. Ti consiglio di dare un'occhiata.

Questo è il tutorial sull'istruzione PL/SQL FORALL con clausola Lower &Upper Bound in Oracle Database. Spero ti sia piaciuto guardare. Assicurati di mettere mi piace e condividere questo blog con i tuoi amici sui tuoi social media. Potete raggiungermi anche sulla mia pagina Facebook.

Grazie e buona giornata.