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 :

MAj d'un champ en pl SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut MAj d'un champ en pl SQL
    Erreur : -1407 ORA-01407: impossible de mettre à jour (Table + nom du c2emechamp) avec NULL.

    Voici mon script et je ne comprend pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for getcurs in curs(idVersion) loop
       -- on fait update avec numéro courant
       update table
       set 1erchamp=getcurs.1erchamp,
            2emeChamp=  case when getcurs.2emeChamp is not null then getcurs.2emeChamp end where COD=getcurs.COD;
    end loop;
    Merci de m'aider

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faudrait le script de création de votre table.

    La formule suivante est étrange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case when getcurs.2emeChamp IS NOT NULL then getcurs.2emeChamp end
    Si 2emeChamp n'est pas null alors vous l'insérez, sinon vous mettez... null (qui est la valeur par défaut d'un case).
    Une belle formule qui ne sert à rien !

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Mettre à jour une table dans une boucle est une mauvaise solution. La bonne solution est de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    update Table
      set (col1, col2) = (Select col1, col2
                           from Source
                          Where...
                               )
    Where ...
    ou similaire. Ou utilisez les collections et la structure ForALL.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/11/2005, 13h04
  2. Modifier champ indexés en SQL
    Par jlvalentin dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/10/2005, 12h26
  3. Maj d'un champ Blob via SQL
    Par Prince of mirkwood dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/07/2004, 20h19
  4. Remise à zero champ auto-incrementé (SQL Server)
    Par James85 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/01/2004, 09h23
  5. [CR 9] Champs d'expression SQL
    Par Marceau dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/10/2003, 11h40

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