IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Cursor ayant besoin d'une variable calculée [12c]


Sujet :

PL/SQL Oracle

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut Cursor ayant besoin d'une variable calculée
    Bonjour,

    Je fais une procédure d'import de données qui va utiliser un MERGE. Sauf méconnaissance de ma part, il me faut un curseur pour alimenter ce MERGE, non ?

    Pour le moment, le début de ma procédure est ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE OR REPLACE PROCEDURE PR_IMPORT_PEF_CARTE_MUT 
    IS
        annee_universitaire integer;
        mois_actuel integer;
     
        CURSOR import_pef IS
            SELECT "id_individu", "civilite", "nom_usuel", "nom-patronymique", "prenom", "date_naissance", "ine", "date_debut_validite", "droit_photo", "droit_import",
                "e_mail", "code_nationalite", "adresse1", "adresse2", "adresse3", "code_postal", "ville", "code_pays", "autre_adresse1", "autre_adresse2", "autre-adresse3", 
                "autre_code_postal", "autre_ville", "autre_code_pays", "telephone1", "telephone2", "niveau", "code_sise_formation", "formation", "echange_internationaux",
                "sens-echange", "date_inscription", "annee_universitaire", "civilite2"
            FROM "v_carte_mut"@pef
            WHERE "annee_universitaire" = annee_universitaire;
    BEGIN
        -- Calcul de l'année universitaire
        SELECT EXTRACT(MONTH FROM CURRENT_DATE) INTO mois_actuel FROM dual;
     
        IF mois_actuel > 6 THEN 
            SELECT EXTRACT(YEAR FROM CURRENT_DATE) - 1 INTO annee_universitaire FROM dual;
        ELSE
            SELECT EXTRACT(YEAR FROM CURRENT_DATE) INTO annee_universitaire FROM dual;
        END IF;
     
        -- Récupération de la vue pef.v_carte_mut
     
    END PR_IMPORT_PEF_CARTE_MUT;
    J'ai d'abord développé la partie calcul de l'année universitaire puis je pensais développer le curseur après mais, d'après les exemples que j'ai vus, il faut déclarer et développer le curseur dans la partie de déclaration des variables. Et comme ce curseur à besoin de la valeur calculée de l'année universitaire, je suis un peu coincé.

    Puis-je simplement déclarer le curseur et l'alimenter plus tard dans le corps de la procédure ?
    Ou alors il y a plus simple ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Bonjour CinePhil,

    Qu'est-ce qui t'empêche d'effectuer ton calcul directement dans la requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE "annee_universitaire" = EXTRACT(YEAR FROM CURRENT_DATE)
                                + CASE WHEN EXTRACT(MONTH FROM CURRENT_DATE) > 6 THEN -1 ELSE 0 END
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Oui, j'ai opté pour un merge avec le select en source. Pas besoin de cursor.
    Il me reste à tester.
    Merci pour la réponse.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer une variable calculée dans une requête SQL
    Par nanar1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/01/2009, 11h45
  2. Réponses: 4
    Dernier message: 02/09/2008, 17h55
  3. Réponses: 2
    Dernier message: 10/03/2008, 00h02
  4. Update qui utilise une variable calculée
    Par LeJay64 dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/10/2007, 14h26
  5. Réponses: 1
    Dernier message: 03/06/2006, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo