curseurs explicites Oracle - ceux que vous devez déclarer physiquement - vous permettent de supprimer la limitation " unique rangée " de SELECT communs. Au lieu de copier et stocker des valeurs de colonnes dans les variables de l'instruction SELECT d'une ligne à la fois , les curseurs explicites vous permettent d'exécuter une requête, enregistrer une collection de valeurs en mémoire et revenir en arrière et de traiter chaque dossier individuellement . Cela permet non seulement de réduire le temps de traitement , mais aussi de réduire la quantité de code que vous devez écrire . Automatiser le processus et de réduire davantage les exigences de codage en utilisant un curseur pour rec boucle pour parcourir et récupérer plusieurs enregistrements de base de données . Instructions
1
Créer ou déclarer le curseur comme d'habitude , en lui donnant un nom unique, le liant à une instruction SELECT commun, puis l'ajouter à la section de déclaration de votre fonction ou d'un processus . L'instruction SELECT peut être simple ou peut être plus complexe , comme un SELECT /WHERE /de GROUPBY . Si, par exemple , vous souhaitez utiliser un curseur pour enregistrement en boucle pour récupérer le salaire mensuel actuel pour chacun de vos employés et totalisera ces montants , l'instruction de déclaration s'affiche comme :
CREATE OR REPLACE SalaryExpense de fonction ( name_in IN VARCHAR2 ) RETURN nombre varchar2IStotal_val (6);
DECLARE salary_cursor curseur isselect monthly_salaryfrom nom employeeswhere = name_in ;
BEGIN
(référence 1 - page 6 , 7 et référence 2)
2
Écrire une instruction de boucle qui ouvre automatiquement le curseur , accède à chaque enregistrement d'employé , extrait les informations de salaire mensuel , vous devez calculer vos frais de salaire mensuel et ajoute chaque valeur à un total cumulé. Lorsque la boucle atteint le dernier disque, elle se ferme automatiquement le curseur :
total_monthy_salary : = 0;
employee_rec dans salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary ; END LOOP ;
3
afficher les résultats et mettre fin à la fonction ou processus :
RETOUR total_monthy_salary end;