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 :

Procédure stockée avec Cursor


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Par défaut Procédure stockée avec Cursor
    Bonjour,
    voici une procédure stockée qui tente de faire un insert dans une table avec un cursor sur une autre table
    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
    create or replace procedure PS_CARREL_CONSOCARTONS is
     
    dateDeb date;
    dateFin date;
     
    cursor C1 is 
    select w_start,w_end from z_weeks_se;
    begin
    open C1;
    fetch C1 into datedeb,datefin;
    close C1;
     
    delete z_consocartons;
     
    insert into z_consocartons(c_id,d_text,emballage,libelle,nbcolis)
    select (gcemballage.emb_code || sum(gcpfab.pfab_pie_r)),datedeb,gcemballage.emb_code,gcemballage.emb_lib2, sum(gcpfab.pfab_pie_r)
    from gcpfab
    inner join gcarticle on gcpfab.pfab_prd_fab = gcarticle.art_code
    inner join gcemballage on gcpfab.pfab_emb = gcemballage.emb_code
    where gcpfab.pfab_date >= datedeb and gcpfab.pfab_date <= datefin
    and gcarticle.art_stat4 = 'M18'
    and gcemballage.emb_code like 'C%' 
    group by datedeb, gcemballage.emb_code, gcemballage.emb_lib2;
    end;
    Le cursor C1 va chercher ces informations :
    select w_start,w_end from z_weeks_se;

    Nom : 1.png
Affichages : 302
Taille : 5,8 Ko

    Ensuite l'insert dans la table z_consocartons ne fonctionne pas comme il faut car seule la 1ere ligne du cursor est prise en compte 17/10/2022 - 23/10/2022:

    Nom : 2.png
Affichages : 293
Taille : 26,3 Ko

    Moi je voudrais que l'insert aille chercher toutes les lignes du cursor soit 5 période de date.

    Merci de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 167
    Par défaut
    Bonjour,

    C'est normal, FETCH ne prend qu'une ligne à la fois. Il faut boucler sur ton curseur pour récupérer toutes les lignes. Mais de toute façon un curseur ne sert à rien ici. Tu peux inclure directement la requête du curseur dans le SELECT sous-jacent du INSERT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    insert into z_consocartons(c_id,d_text,emballage,libelle,nbcolis)
    select (gcemballage.emb_code || sum(gcpfab.pfab_pie_r)),datedeb,gcemballage.emb_code,gcemballage.emb_lib2, sum(gcpfab.pfab_pie_r)
    from gcpfab
    inner join gcarticle on gcpfab.pfab_prd_fab = gcarticle.art_code
    inner join gcemballage on gcpfab.pfab_emb = gcemballage.emb_code
    inner join z_weeks_se on gcpfab.pfab_date >= z_weeks_se.datedeb and and gcpfab.pfab_date <= z_weeks_se.datefin
    where gcarticle.art_stat4 = 'M18'
    and gcemballage.emb_code like 'C%' 
    group by datedeb, gcemballage.emb_code, gcemballage.emb_lib2;

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

Discussions similaires

  1. Procédure stockée avec retour de curseur
    Par Oufti dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/11/2005, 22h40
  2. Procédure stockée avec SELECT UNION
    Par maredami dans le forum Oracle
    Réponses: 4
    Dernier message: 07/11/2005, 11h05
  3. Procédure stockée avec serveur lié et paramètres
    Par AITOZ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2005, 17h51
  4. Procédure stockée avec param de sortie:marchepas av ADO
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/10/2004, 12h04

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