Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> software >> Software Database >> .

Come utilizzare un cursore per il REC in un loop in Oracle

Oracle cursori espliciti - quelli devi fisicamente dichiarare - consentono di rimuovere la "riga unica " limitazione delle istruzioni SELECT comuni . Invece di copiare e memorizzare i valori delle colonne nelle variabili istruzione SELECT di una riga alla volta , cursori espliciti consentono di eseguire una query , memorizza un insieme di valori in memoria e tornare indietro ed elaborare ogni record singolarmente . Questo non solo riduce il tempo di elaborazione , ma riduce anche la quantità di codice che dovete scrivere . Automatizzare il processo e ridurre ulteriormente i requisiti di codifica utilizzando un cursore FOR rec ciclo per scorrere e recuperare più record del database . Istruzioni
1

Creare o dichiarare il cursore come normale dandogli un nome univoco , legandola a un'istruzione SELECT comune e poi aggiungerlo alla sezione di dichiarazione della funzione o del processo . L'istruzione SELECT può essere semplice o può essere più complessa , come ad esempio una SELECT /WHERE /GroupBy . Se, ad esempio , si desidera utilizzare un cursore loop FOR rec per andare a prendere l'attuale stipendio mensile per ciascuno dei vostri dipendenti e quindi totale questi importi , la dichiarazione dichiarazione viene visualizzato come :

creare o sostituire Funzione SalaryExpense ( name_in IN vARCHAR2 ) RETURN numero varchar2IStotal_val ( 6) ;

DICHIARARE il cursore salary_cursor isselect monthly_salaryfrom nome employeeswhere = name_in ;

BEGIN

( Riferimento 1 , pagina 6 , 7 e di riferimento 2 ) economici 2

scrivere una dichiarazione di loop che si apre automaticamente il cursore , accede a ogni record dipendente , estrae le informazioni stipendio mensile è necessario calcolare la vostra spesa stipendio mensile e aggiunge ogni valore per un totale parziale . Quando il ciclo raggiunge l' ultimo record , chiude automaticamente il cursore :

total_monthy_salary : = 0 ;

PER employee_rec in salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary ; END LOOP ;


3

visualizzare i risultati e terminare la funzione o processo :

RITORNO total_monthy_salary ; END;

 

software © www.354353.com