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 :

DBLINK et les séquences


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Par défaut DBLINK et les séquences
    Bonjour

    c'est encore moi et mes problemes avec les dblink


    Je n'arrive pas à utiliser une séquence distante dans un PL/SQL

    j'ai pourtant crée un synonyn sur ma base local
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE PUBLIC SYNONYM COMPTE_CLIENT_S FOR COMPTE_CLIENT_S@TEST9;
    si je demande le numero de séquence à partir de SQL*plus ou Toad sur ma base locale
    par le code suivant, j'obtiens bien le resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> SELECT COMPTE_CLIENT_S.NEXTVAL FROM DUAL;
     
       NEXTVAL
    ----------
    1000000254
    je precise que si le synomyn public n'existe pas, j'ai un mess commequoi la séquence n'existe pas

    par contre dans un PL/SQL, j'ai trjs le message "La séquence n'existe pas"

    voici le PL/SQL simplifié

    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
    DECLARE
     
      VAR NUMBER;
     
    BEGIN
     
     SELECT COMPTE_CLIENT_S.NEXTVAL
     INTO  VAR
     FROM DUAL@TEST9;
     
    END;
     
    ORA-06550: Ligne 7, colonne 9 :
    PL/SQL: ORA-02289: la séquence n'existe pas
    ORA-06550: Ligne 7, colonne 2 :
    PL/SQL: SQL Statement ignored

    merci pour votre aide

  2. #2
    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
    1°) je ne suis pas sûr du tout que ce soit possible

    2°) pourquoi taper dans le dual distant ?

  3. #3
    Membre averti Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Par défaut
    Citation Envoyé par orafrance
    1°) je ne suis pas sûr du tout que ce soit possible
    mais pourquoi ca ne marche pas dans un PL alors q'en SQL ca passe

    je deviens avec c'est script


    Citation Envoyé par orafrance
    2°) pourquoi taper dans le dual distant ?
    ce n'est qu'un test le dual distant, meme le local ca ne marche pas

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Comme l'a dit orafrance, il faut utiliser le dual distant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select laly.nextVal from dual@recette
     
       NEXTVAL
    ----------
            21
    Ce qui m'étonnes, c'est que je viens de créer la séquence et 20 correspond au nextVal que j'aurais eu localement + 20 qui est la taille du cache de la séquence


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  5. #5
    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
    Citation Envoyé par lalystar
    Comme l'a dit orafrance, il faut utiliser le dual distant
    ha non, justement, je disais d'utiliser le local

    j'ai pas bien compris ton problème Tu confondrais pas le CACHE et l'incrément par hasard ?

  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
    Solution Description:

    =====================

    To select nextval from a sequence on a remote database, you can create a

    synonym for the remote sequence or you can change the order of the statement.

    1. Create a Synonym

    ----------------

    SQL> create synonym remote_seq for seq_remote@db_link;

    SQL> select remote_seq.nextval from dual;

    NEXTVAL

    ----------

    9

    - OR -

    2. Change the order of the Statement

    -------------------------------

    SQL> select seq_remote.nextval from dual@db_link

    ORA-02289: sequence does not exist

    SQL> select seq_remote.nextval@dblink from dual;

    NEXTVAL

    ----------

    11

    Solution Explanation:

    =====================

    By creating a synonym for the sequence or changing the order of the select

    statement you will be able to select nextval from the sequence without error.

  7. #7
    Membre averti Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Par défaut
    Citation Envoyé par lalystar
    Comme l'a dit orafrance, il faut utiliser le dual distant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select laly.nextVal from dual@recette
     
       NEXTVAL
    ----------
            21
    Ce qui m'étonnes, c'est que je viens de créer la séquence et 20 correspond au nextVal que j'aurais eu localement + 20 qui est la taille du cache de la séquence


    Laly.
    le dual local ou distant n'a pas d'importance, la requete utilise tjrs la sequence local
    d'ou la creation du synomyn sur la séquence distante

  8. #8
    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
    le synonyme a le même nom que la sequence local ?

  9. #9
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Je crois que je deviens maboule, même sous SQL*Plus ca marche plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select laly.nextVal from dual@recette;
    select laly.nextVal from dual@recette
           *
    ERROR at line 1:
    ORA-02289: la séquence n'existe pas

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  10. #10
    Membre averti Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Par défaut
    Citation Envoyé par orafrance
    Solution Description:

    =====================

    To select nextval from a sequence on a remote database, you can create a

    synonym for the remote sequence or you can change the order of the statement.

    1. Create a Synonym

    ----------------

    SQL> create synonym remote_seq for seq_remote@db_link;

    SQL> select remote_seq.nextval from dual;

    NEXTVAL

    ----------

    9

    - OR -

    2. Change the order of the Statement

    -------------------------------

    SQL> select seq_remote.nextval from dual@db_link

    ORA-02289: sequence does not exist

    SQL> select seq_remote.nextval@dblink from dual;

    NEXTVAL

    ----------

    11

    Solution Explanation:

    =====================

    By creating a synonym for the sequence or changing the order of the select

    statement you will be able to select nextval from the sequence without error.

    YAIIIISE

    merci beaucoup ca marche

    je parle de la solution 2 qui fonctionne en PL, alors que la 1 ne fonctionne pas en PL

  11. #11
    Membre averti Avatar de Kit59
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Par défaut
    Citation Envoyé par orafrance
    le synonyme a le même nom que la sequence local ?
    il n'y pas de séquence locale, juste la distante.
    et oui j'ai donner le meme nom au synomyne local que ma séquence distante

  12. #12
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Citation Envoyé par orafrance
    Citation Envoyé par lalystar
    Comme l'a dit orafrance, il faut utiliser le dual distant
    ha non, justement, je disais d'utiliser le local

    j'ai pas bien compris ton problème Tu confondrais pas le CACHE et l'incrément par hasard ?
    Je sais pas ce que j'ai psychoté mais j'arrive pas à le reproduire.

    Avec le synonyme, ca fonctionne bien par contre.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  13. #13
    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
    il est temps que le week-end arrive

  14. #14
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Citation Envoyé par orafrance
    il est temps que le week-end arrive
    Même les vacances ! Pt1 encore deux semaines, je suis atteri sur un super projet


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

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

Discussions similaires

  1. [Sequences]Lister les séquences de ma base
    Par GLDavid dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/05/2007, 19h17
  2. [Oracle 8i & 10g] Une question sur les séquences
    Par Bahan dans le forum Administration
    Réponses: 5
    Dernier message: 06/04/2007, 14h54
  3. [FLASH 8] Contrôler les séquences
    Par achos dans le forum Flash
    Réponses: 3
    Dernier message: 23/03/2007, 16h12
  4. les séquences chez oracle
    Par daliok dans le forum Oracle
    Réponses: 1
    Dernier message: 23/11/2006, 11h48
  5. récupérer les séquences d'une base oracle
    Par gloglo dans le forum Oracle
    Réponses: 5
    Dernier message: 11/10/2006, 14h41

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