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 :

Création de séquence


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Par défaut Création de séquence
    Bonjour,

    Est-il possible d'utiliser le résultat d'une fonction comme paramètre d'initialisation d'une séquence?

    Voici ce que j'aimerais faire:

    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
     
    drop table TEST;
     
    CREATE TABLE TEST (ID NUMBER NOT NULL);
     
    CREATE OR REPLACE FUNCTION DEBUT_SEQUENCE RETURN NUMBER IS
    	debut NUMBER;
    BEGIN
    	select MAX(ID) into debut from TEST;
    	IF debut = NULL THEN RETURN 1;
    	ELSE RETURN (debut+1);
    	END IF;
    END;
    /
     
    CREATE sequence SEQ_ID
    	start with DEBUT_SEQUENCE
    	increment by 1
    	nocycle;
    END;
     
    CREATE OR REPLACE TRIGGER NUMEROAUTO
    	before insert on TEST 
    	for each row
    BEGIN  
        	select SEQ_ID.nextval into :new.ID from dual;  
    END;
    /
    Merci

    Cordialement
    Piotr

  2. #2
    Membre chevronné Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Par défaut
    A mon avis il faut passer par du SQL Dynamique

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par piotrek30
    Bonjour,
    ...Voici ce que j'aimerais faire:...
    et pourquoi vous n'essayez tout simplement pas ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Par défaut
    J'ai essayé justement et voici mon message d'erreur:

    start with DEBUT_SEQUENCE
    *
    ERREUR à la ligne 2 :
    ORA-01722: Nombre non valide

    Comment pourrais je utiliser le résultat d'une fonction pour initialiser une séquence ?

    Merci par avance

    Piotr

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Dans ce cas, ls Sql dynamique est votre salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Declare
      LC$Req  Varchar2(512) ;
    Begin
     
       LC$Req := ' CREATE sequence SEQ_ID start with '
         || DEBUT_SEQUENCE || ' increment by 1 nocycle' ;
     
       execute immediate LC$Req ;
     
    END;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Par défaut
    Merci pour le coup de main,
    par contre apres avoir exécuté le code, j'ai encore cette erreur:

    Declare
    *
    ERREUR à la ligne 1 :
    ORA-01722: Nombre non valide
    ORA-06512: à ligne 8

    Je ne vois pas ce qui cloche.

  7. #7
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    affichez la variable LC$Req (dbms_output.put_line) pour comprendre...

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

Discussions similaires

  1. Création de séquences aléatoires de chiffres avec conditions
    Par sigor16 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/02/2013, 11h35
  2. Création de séquence
    Par alaa00 dans le forum Oracle
    Réponses: 1
    Dernier message: 11/01/2010, 15h15
  3. trigger évènement système et création de séquence.
    Par yorgh1234 dans le forum PL/SQL
    Réponses: 13
    Dernier message: 16/04/2009, 15h33
  4. Réponses: 7
    Dernier message: 16/10/2006, 18h40
  5. Réponses: 4
    Dernier message: 21/02/2006, 16h47

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