Nwlapcug.com


Come utilizzare un cursore per REC in un ciclo in Oracle

Come utilizzare un cursore per REC in un ciclo in Oracle


Cursori espliciti Oracle..--quei fisicamente è necessario dichiarare..--consentono di rimuovere il limite di "fila" di comuni istruzioni SELECT. Invece di copiare e memorizzare i valori di colonna in una riga di istruzione SELECT variabili alla volta, cursori espliciti consentono di eseguire una query, archiviare in memoria un insieme di valori e tornare indietro ed elaborare individualmente ogni record. Questo non solo riduce i tempi di elaborazione, ma riduce anche la quantità di codice che è necessario scrivere. Automatizzare il processo e ulteriormente ridurre i requisiti di codifica utilizzando un cursore per rec ciclo per ciclo attraverso e recuperare più record del database.

Istruzioni

1

Creare o dichiarare il cursore come normale dandogli un nome univoco, associando tale controllo a un'istruzione SELECT comune e quindi accodarlo alla sezione di dichiarazione della funzione o processo. L'istruzione SELECT può essere semplice o può essere più complessa, ad esempio un'istruzione SELECT/dove/GROUPBY. Se, ad esempio, si desidera utilizzare un cursore per rec ciclo per recuperare l'attuale stipendio mensile per ogni dipendente e quindi totale tali importi, l'istruzione di dichiarazione verrà visualizzato come:

CREARE o sostituire la funzione SalaryExpense

( name_in IN varchar2 )
RETURN varchar2

È

total_val number(6);

DICHIARARE il cursore salary_cursor è

select monthly_salary
from employees
where name = name_in;

BEGIN

(Fare riferimento a pagina 1 6, 7 e riferimento 2)

2

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

total_monthy_salary: = 0;

PER employee_rec in salary_cursor
LOOP
total_monthy_salary: = total_monthy_salary + employee_rec.monthly_salary;
FINE CICLO;

3

Visualizzare i risultati e termina la funzione o il processo:

RETURN total_monthy_salary;
FINE;