- diejenigen, die Sie körperlich erklären müssen - Oracle explizite Cursor können Sie entfernen die "single row" Begrenzung der gemeinsamen SELECT-Anweisungen . Anstatt das Kopieren und Speichern von Werten in Spalte SELECT-Anweisung Variablen eine Zeile zu einem Zeitpunkt , zu ermöglichen explizite Cursor Sie eine Abfrage ausführen , speichern Sie eine Sammlung von Werten im Speicher und gehen Sie zurück und verarbeiten jeden Datensatz einzeln . Dies reduziert nicht nur die Verarbeitung Zeit, sondern reduziert auch die Menge an Code, den Sie brauchen, um zu schreiben. Automatisieren Sie den Prozess weiter zu reduzieren und Codierung Anforderungen mit einem CURSOR FOR rec -Schleife durch und Abrufen von mehreren Datensätzen . Anleitung
1
Erstellen oder erklären Sie den Cursor wie gewohnt , indem sie ihm einen eindeutigen Namen , binden sie an eine gemeinsame Anweisung SELECT und dann nehmen sie in die Deklaration Abschnitt Ihrer Funktion oder Prozess . Die SELECT-Anweisung kann einfach oder komplex sein kann , wie eine SELECT /WHERE /GROUPBY Aussage. Wenn Sie zum Beispiel einen CURSOR FOR rec Schleife verwenden , um die aktuelle Monatsgehalt für jeden Ihrer Mitarbeiter zu holen und dann insgesamt diese Beträge wollen, wird die Erklärung Erklärung anzuzeigen :
CREATE OR REPLACE Funktion SalaryExpense ( name_in IN varchar2 ) RETURN varchar2IStotal_val Anzahl (6);
DECLARE Cursor salary_cursor isselect monthly_salaryfrom employeeswhere name = name_in ;
BEGIN
(Referenz 1- Seite 6, 7 und Referenz 2)
2
einen Looping -Anweisung, die automatisch öffnet den Cursor , greift jeder Mitarbeiter aufnehmen, extrahiert das Monatsgehalt Informationen, die Sie brauchen, um Ihr Monatsgehalt Kosten berechnen und fügt jeden Wert auf eine laufende Summe . Wenn die Schleife der letzte Datensatz erreicht , wird es automatisch schließt den Cursor :
total_monthy_salary : = 0;
FÜR employee_rec in salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary ; END LOOP ;
3
Anzeige der Ergebnisse und beenden Sie die Funktion oder Prozess :
RETURN total_monthy_salary ; END;