Les partenaires publicitaires:

Comment utiliser un curseur pour rec dans une boucle dans l'oracle

Curseurs explicites Oracle - ceux que vous devez déclarer physiquement - vous permettent de retirer la "seule rangée" limitation des instructions SELECT communes. 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, de stocker une collection de valeurs en mémoire et revenir en arrière et de traiter chaque dossier individuellement. Cela réduit non seulement le temps de traitement, mais réduit également 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 enregistrement en boucle pour parcourir et récupérer plusieurs enregistrements de base de données.

Instructions

  1. Créer ou déclarer le curseur comme normale 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 / déclaration GROUPBY. Si, par exemple, vous souhaitez utiliser un curseur pour enregistrement en boucle pour aller chercher le salaire mensuel actuel pour chacun de vos employés et totalisera ces montants, l'instruction de déclaration affichera comme:

    CREATE OR REPLACE Fonction SalaryExpense

    (Name_in EN varchar2)
    RETOUR varchar2

    IS



    Numéro total_val (6) -

    DECLARE curseur est salary_cursor

     sélectionnez monthly_salary
    des employés
    où name = name_in-



    COMMENCER

    (Référence 1-page 6, 7 et référence 2)

  2. Donnez votre instruction de boucle qui ouvre automatiquement le curseur, accède à chaque enregistrement d'employé, extrait les informations de salaire mensuel, vous devez calculer votre dépense mensuelle de salaire et ajoute chaque valeur à un total de fonctionnement. Lorsque la boucle atteint le dernier enregistrement, il se ferme automatiquement le curseur:

    total_monthy_salary: = 0;

    POUR employee_rec dans salary_cursor
    LOOP
    total_monthy_salary: = + total_monthy_salary employee_rec.monthly_salary-
    END LOOP;

  3. Afficher les résultats et mettre fin à la fonction ou processus:

    RETOURNER total_monthy_salary-
    FIN;

» » » » Comment utiliser un curseur pour rec dans une boucle dans l'oracle