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 :

Numéro de séquence


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 53
    Par défaut Numéro de séquence
    Bonjour,

    Je suis un débutant PL/SQL et j'aimerai faire une fonction "ma_fonction" qui permet de retourner la dernière valeur d'un séquence.

    SELECT maSequence FROM dual;
    Pour que ensuite, crée une procédure qui permet de créer une séquence qui commence par la valeur retournée par la première fonction:

    CREATE SEQUENCE maSequence
    START WITH ma_fonction
    MAXVALUE 99999999
    MINVALUE 1
    CYCLE CACHE 20 NOORDER;
    Pourriez vous m'aider ??

    merci d'avance.

  2. #2
    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
    C’est un serpent qui se morde la queue.

  3. #3
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Un truc comme ça ?

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    SQL> drop sequence maseq1;
     
    SÚquence supprimÚe.
     
    SQL> create sequence   maseq1 start with 123 maxvalue 99999999 minvalue 1 cycle nocache order;
     
    SÚquence crÚÚe.
     
    SQL> drop sequence maseq2;
     
    SÚquence supprimÚe.
     
    SQL> create or replace procedure ma_proc ( sequence_de_ref in varchar2, nouvelle_sequence in varchar2 ) is
      2    seqval number;
      3  begin
      4    execute immediate 'select '||trim(sequence_de_ref)||'.currval from dual' into seqval;
      5    execute immediate 'create sequence '||nouvelle_sequence||' start with '||to_char(seqval)||' maxvalue 99999999 minvalue 1 cycle cache 20 noorder' ;
      6  end;
      7  /
     
    ProcÚdure crÚÚe.
     
    SQL> select maseq1.nextval from dual;
     
       NEXTVAL
    ----------
           123
     
    SQL> exec ma_proc( 'maseq1', 'maseq2' )
     
    ProcÚdure PL/SQL terminÚe avec succÞs.
     
    SQL> select maseq2.nextval from dual;
     
       NEXTVAL
    ----------
           123

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 53
    Par défaut
    @mnitu : non ce n'est pas un serpent qui se mord la queue. Je vais donner plus de détails afin de comprend le but.

    J'ai deux schémas sur une seule base : (schema_1, schema_2 sur ma_base)
    j'ai une séquence qui s'appelle ma_seq sur schema_1. Le but c'est de faire une fonction qui permet de récupérer la dernière valeur de ma_seq sur schema_1 et de créer la même séquence "ma_seq" dans le deuxième schéma "schema_2" qui prend la valeur de la fonction comme start value.

    ojo77: merci mais le problème c'est que ça n'est pas dans le même schéma et je sais pas cmt faire des select sur un schéma alors que je suis connecté sur un autre. Je sais pas si je suis clair...

  5. #5
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Et ceci

    Sur Schema1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create sequence TEST1 start with 1;
    Grant all on test1 to schema2;
     1* select test1.nextval from dual
    SQL> /
       NEXTVAL
    ----------
             1
    Sur Schema2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select schema1.test1.nextval from dual
    SQL> / 
     
       NEXTVAL
    ----------
             2
    Et voilu

    Vous pouvez aussi creer un " public synonym " pour que le select soit identique sur vos 2 schemas

  6. #6
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 53
    Par défaut
    le truc c'est que cette procédure est faite pour migrer la séquence d'un schéma à un autre pour qu'en suite on ait plus besoin du premier schéma !!
    là tu fais appelle a la séquence du premier schéma dans le deuxième.

Discussions similaires

  1. [AC-2003] création d'un numéro de séquence
    Par Syl_13 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/08/2009, 12h02
  2. Numéro de séquence non autorisé ici
    Par ronald.kooman dans le forum Oracle
    Réponses: 4
    Dernier message: 19/03/2009, 08h49
  3. Requête SQL avec "numéro de séquence"
    Par MatthieuQ dans le forum Développement
    Réponses: 8
    Dernier message: 23/01/2009, 13h34
  4. Réponses: 1
    Dernier message: 14/01/2008, 15h45
  5. Récupérer un numéro de séquence
    Par R1pToR dans le forum Struts 1
    Réponses: 22
    Dernier message: 17/07/2007, 17h14

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