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 :

problem pl/sql


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut problem pl/sql
    salut,

    J'ai 2 tables, produit et produit2;
    donc je fais un bloc pl/sql pour inserer le contenu de ma table produit dans la table produit2 en effectuant quelque modification ;

    voila mon bloc
    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
    declare
     
    euro constant real:= 6.55957;
    tot integer;
    cursor prod is select * from produit;
    nuplet prod%rowtype;
    zero exception;
     
    begin
     
     
    select count(*) into tot from produit;
     
    if tot=0 then
    raise zero;
    else
    for nuplet in prod loop
    insert into produit2 values(nuplet.num,upper(nuplet.desi),round(nvl(nuplet.prix,0)*euro));
    end loop;
    end if;
     
    exception
    when zero then insert into produit2 values(0,'Pas de produit',NULL);
    end;
    /
    mon code à l'air correct mais pourtant cela ne fonctionne pas et j'ai cette erreur ;
    declare
    *
    ERREUR à la ligne 1 :
    ORA-01438: valeur incohérente avec la précision indiquée pour cette colonne
    ORA-06512: à ligne 18
    merci.

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    1ère règle : dans un SELECT ou INSERT on doit TOUJOURS préciser les colonnes même si syntaxiquement cela ne déclenche pas d'erreur de les omettre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cursor prod is select * from produit;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into produit2 values ..
    2nd règle : quand on cherche à savoir s'il y existe des enregistrements (en peu importe que la réponse soit 1, 2 ou 10690) on ne fait pas de count(*) mais une gestion d'exception avec NO_DATA_FOUND
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*) into tot from produit;
     
    if tot=0 then
    3ème règle : quand on demande de debugger du code (ce qui n'est pas le but d'u forum d'entre-aide !), on donne aux lecteurs un jeu d'essai complet leur permettant de reproduire le problème.

Discussions similaires

  1. probleme requete SQL
    Par grochenel dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/12/2005, 09h26
  2. [MySQL] probleme requete sql et php
    Par digger dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/10/2005, 14h15
  3. problemes exercices sql
    Par siciliano_messinese dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/09/2005, 16h52
  4. [JDBC]Probleme curseur SQL
    Par Welldone dans le forum JDBC
    Réponses: 13
    Dernier message: 11/07/2005, 16h57
  5. probleme requete sql
    Par Shosho dans le forum Langage SQL
    Réponses: 12
    Dernier message: 03/05/2005, 09h25

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