Oracle expliciete cursors - die moet je fysiek verklaren - laat je de " rij " beperking van de gemeenschappelijke SELECT-instructies te verwijderen . In plaats van het kopiëren en opslaan kolom waarden in SELECT-instructie variabelen een rij tegelijk , expliciete cursors kunt u een query uit te voeren , op te slaan een verzameling van waarden in het geheugen en ga terug en individueel verwerken elke record . Dit vermindert niet alleen de verwerkingstijd , maar vermindert ook de hoeveelheid code die je nodig hebt om te schrijven . Het proces te automatiseren en verder te verminderen codering eisen met behulp van een CURSOR FOR rec -lus en ophalen meerdere database records . Instructies 1 Maak of verklaren de cursor als normaal door het een unieke naam , het aan een gemeenschappelijke SELECT statement binden en voeg deze toe aan de sectie verklaring van uw functie of proces . De SELECT-instructie kan eenvoudig zijn of kunnen complexer zijn , zoals een SELECT /WAAR /GroupBy statement . Als , bijvoorbeeld , u wilt een CURSOR gebruiken VOOR rec lus om de huidige maandsalaris halen voor elk van uw medewerkers en vervolgens totaal van deze bedragen , zal de verklaring verklaring geven: Scheppen of te vervangen Functie SalaryExpense ( name_in IN varchar2 ) RETURN varchar2IStotal_val nummer ( 6 ) ; DECLARE cursor salary_cursor isselect monthly_salaryfrom employeeswhere name = name_in ; BEGIN ( Referentie 1 - pagina 6 , 7 en Reference 2 ) kopen van 2 Schrijf een looping verklaring dat automatisch opent de cursor , opent elke werknemer staat , haalt de maandsalaris informatie die u nodig hebt om uw maandsalaris kosten berekenen en voegt elke waarde aan een lopend totaal . Toen de loop van de laatste record bereikt, sluit automatisch de cursor : total_monthy_salary : = 0 ; VOOR employee_rec in salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary ; END LOOP ; < br > Goedkope 3 Geef de resultaten en het einde van de functie of proces : RETURN total_monthy_salary ; END ;
|