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

Oracle Discussion :

requete Postgresql en requête Oracle


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut requete Postgresql en requête Oracle
    Bonjour j'ai une requête sql que je dois executer sur plusieurs bases de données, la voici :
    SELECT setval('SeqDeal', max(deal_id) + 1) from DEALS;
    Je l'ai executé sur une base de donnée postgresql, et ça a marché, mais quand j'ai voulu l'executé sur une BD oracle j'ai cette erreur là :

    Error: java.sql.SQLException: ORA-00904: "SETVAL" : identificateur non valide
    , SQL State: 42000, Error Code: 904
    Est ce que quelqu'un pourrait me dire à koi correspond cette requête en oracle svp !!!!

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    une sequence en oracle, ça ce fait comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> create sequence s;
     
    Sequence created.
     
    SQL> select s.nextval from dual;
     
       NEXTVAL
    ----------
             1
    de faire un max+1 pour incrémenter une valeur, c'est mauvais pour les performances

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    ma séquence est déjà créer mais quand j'exeute cette requête :
    select SeqDeal.nextval from DEALS;
    j'ai plusieurs valeur et pas seulement une !!! et je ne omprends pas pourquoi

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Pour Oracle, il faut utiliser la table "bidon" DUAL et non votre table applicative.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select s.nextval from dual;
     
       NEXTVAL
    ----------
             1

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    D'accord,
    Mais la requête que je viens d'executer ds la base de données :
    select SeqDeal.nextval from DEALS;
    Elle a fait koi ??? est ce qu'elle a modifier des données ds la BD, je vous demande ça parce que je suis en stage, et je ne veux pas que leur BD soit modifié par ma faute ???

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Les tables (DEALS dans votre cas) ne sont pas modifiées. Par contre, cela modifie le prochain numéro retourné par la séquence: si vous avez 10 lignes dans DEALS, la séquence seqDeal est incrémentée (d'au moins) de 10 unités.

Discussions similaires

  1. Traduire requête oracle vers access
    Par petitmic dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 19h21
  2. Voir les dernières requête Oracle
    Par newchurch dans le forum Oracle
    Réponses: 4
    Dernier message: 12/04/2005, 00h41
  3. [Requete] Intersection de requte
    Par KorHeve dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/04/2005, 18h45
  4. requete postgresql en c++
    Par ogre dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/12/2003, 23h55
  5. Retour de requete postgresql / Shell Script
    Par doohan dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/06/2003, 19h07

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