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 :

Problème d'exécution d'une procédure


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 48
    Par défaut Problème d'exécution d'une procédure
    bonjour
    je viens de creer une procedure qui calcule le nombre d'operation mais il me retourne une erreur voici le code de la procedure:
    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 CNT IS
     
    cursor cur is select NUM_COMPTE,MONTANT,DATE_OPERATION,SENS from tst where NUM_COMPTE='0643536211004100'and DATE_OPERATION ='05/05/2008';
     
     
     NBOCR number(15,3);
     NBODB number(15,3);
    sens1 VARCHAR2(2 BYTE);
    sens2 VARCHAR2(2 BYTE);
    begin
     
    sens1 :='CR';
    sens2 :='DB';
    OPEN CUR; 
     
    for sens1 in cur
    loop
    select count(*) into tst1(NBOCR) from tst;
    end loop;
    for sens2 in cur 
    loop
    select count(*) into tst1(NBODB) from tst;
    end loop;
    CLOSE CUR;
    end cnt;
    voici l'erreur qui me donne:

    PLS-00357: Table,View Or Sequence reference 'TST1' not allowed in this context
    merci de me dire pourquoi il m'affiche cette erreur.

  2. #2
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 48
    Par défaut
    LE champ NBOCR ET NBOdb se trouvent dans la table TST1.

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    INTO tst1(NBODB) ça ne veut rien dire

    Tu veux faire quoi ?

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 48
    Par défaut
    je veux compter le nombe des operation créditeur CR et le nombre des opérations débiteur DB sachant que les sont enregistré dans la table tst:
    exemple des données de la table TST:

    NUM_COMPTE DATE_OPERATION MONTANT SENS

    0643536211004100 05/05/2008 3000 DB
    0643536211004100 02/05/2008 15000 DB
    0643536211004100 23/05/2008 6000 DB
    0643536211004100 08/05/2008 48984 DB
    0668236211000100 08/05/2008 1000 DB
    0668236211000100 08/05/2008 6 DB
    0668236211000100 02/05/2008 4500 CR
    0668236211000100 21/05/2008 6 DB
    0668236211000100 21/05/2008 2000 DB
    0668236211000100 11/05/2008 1000 DB
    0668236211000100 11/05/2008 6 DB
    0668236211000100 11/05/2008 1000 DB
    0668236211000100 11/05/2008 6 DB
    0668236211000100 25/05/2008 6 DB
    et je veux avoir dans la table tst1 le nombre des opérarion suivant le sens de l'operation
    voici la table tst1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE TST1
    (
      NUM_COMPTE  VARCHAR2(16 BYTE)                 NOT NULL,
      NBOCR       NUMBER(15,3),//nombre opération créditeur.
      NBODB       NUMBER(15,3),//nombre operation debiteur.
      MONTANT     NUMBER(15,3),
      SENS        VARCHAR2(2 BYTE),
      MOIS        DATE
    )

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table(colonne) SELECT colonnes FROM table2
    Pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT colonnes INTO table(colonne)

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT valeur INTO variable
    permet d'insérer le résultat de la requête dans une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table SELECT valeur
    permet d'insérer le résultat de la requête dans une table

    Tu as mélangé les 2.

    Pourquoi pas tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TST1
    SELECT NUM_COMPTE,SUM(MONTANT),COUNT(NBOCR),COUNT(NBODB),SENS,MOIS FROM tst 
    GROUP BY COMPTE, SENS, MOIS;

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 48
    Par défaut
    jai essayé mais il ne retourne rien CREATE OR REPLACE PROCEDURE CNT IS

    cursor cur is select NUM_COMPTE,MONTANT,DATE_OPERATION,SENS from tst where NUM_COMPTE='0643536211004100'and DATE_OPERATION ='05/05/2008';


    NBOCR number(15,3);
    NBODB number(15,3);
    sens1 VARCHAR2(2 BYTE);
    sens2 VARCHAR2(2 BYTE);
    MOIS date;
    begin

    sens1 :='CR';
    sens2 :='DB';
    OPEN CUR;


    loop
    INSERT INTO TST1

    SELECT NUM_COMPTE,SUM(MONTANT),COUNT(NBOCR),COUNT(NBODB),SENS,MOIS FROM tst
    GROUP BY NUM_COMPTE, SENS, MOIS;

    end loop;
    CLOSE CUR;

    end cnt;

    il ne retourne rien

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/10/2011, 10h15
  2. Réponses: 2
    Dernier message: 29/05/2007, 14h50
  3. [VB6] Durée d'exécution d'une procédure
    Par Peltchag dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/10/2005, 14h51
  4. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 17h45
  5. Réponses: 15
    Dernier message: 08/07/2004, 08h20

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