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;
|