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

SQL Oracle Discussion :

Problème sur un update


Sujet :

SQL Oracle

  1. #1
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut Problème sur un update
    Bonjour j'ai un petit soucis avec un de mes update, et je ne vois pas où il est, j'ai besoin d'un œil externe pour ce coup-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE schema.table
       SET (col1, col2,col3) = ('a','b','c')
     WHERE truc = machin
    La formule est-elle exacte ?

    erreur déclenchée :
    ORA-01767: UPDATE ... SET expression must be a subquery

  2. #2
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Cela ressemble à du Oracle ?

    mais un update standard s'écrit :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE schema.table
    SET Col1 = 'a',
          Col2 = 'b',
          Col3 = 'c' 
    WHERE truc = machin

  3. #3
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Merci problème résolu.

    C'est bien du Oracle, après je me demande bien avec quoi j'ai pu confondre pour mettre cette syntaxe.

  4. #4
    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
    Si vous voulez utiliser le constructeur de lignes valuées (row value constructor en anglais), la syntaxe est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE schema.TABLE
       SET (col1, col2, col3) = (select 'a','b','c' from dual)
     WHERE truc = machin;
    C'est ce que vous dit le message d'erreur, avec cette syntaxe la mise à jour doit passer par une sous-requête.

  5. #5
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Oui mais j'avais les donnée en direct elle n'existait pas dans aucune table de la base de données.

    Par conter je ne connais pas le DUAL, c'est quoi?

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    DUAL est une table spéciale, à une seule colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQL> DESC DUAL
     Nom                                                                      NULL ?   Type
     ------------------------------------------------------------------------ -------- -------------------------------------------------
     DUMMY                                                                             VARCHAR2(1)
    Elle appartient à SYS, et on ne peut y accéder qu'en SELECT.

    Elle contient une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL> SELECT * FROM DUAL
      2  /
     
    D
    -
    X
    Elle permet de faire générer une ligne, très souvent pour des exemples...

    Genre quand je veux faire un calcul et que j'ai la flemme de lancer calc, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> SELECT 2500 * 0.196 FROM DUAL;
     
    2500*0.196
    ----------
           490

  7. #7
    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
    C'est une table avec une ligne et une colonne, utile pour exécuter des requêtes sur des constantes ou des variables systèmes, comme par exemple la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sysdate from dual;
    Plus de détail dans la documentation Oracle :

  8. #8
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Ok merci bien pour ces infos

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

Discussions similaires

  1. Problème sur un update
    Par sebnantes dans le forum Développement
    Réponses: 4
    Dernier message: 26/02/2010, 09h05
  2. [SQL2005] Problème sur un update
    Par TRadioyes dans le forum Développement
    Réponses: 2
    Dernier message: 24/11/2008, 15h31
  3. Problème sur un Update
    Par Couiin dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/02/2008, 11h44
  4. Problème sur un update
    Par bonnet85 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/02/2008, 06h46
  5. Problème sur un UPDATE (T-SQL)
    Par djidji84 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/01/2007, 13h02

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