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*Plus Oracle Discussion :

alter sequence increment by (select..) nombre non valid!?


Sujet :

Sql*Plus Oracle

  1. #1
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut alter sequence increment by (select..) nombre non valid!?
    salut ,

    voila j'ai cr�� une s�quence d�marrant avec 1 tout ce qui ya de plus basique.
    mais , comme je voudrais que la s�quence se r�initialise (genre reset s�quence)
    j'ai sus qu'il fallait utiliser la clause InCrement by -(la valeur courante) pour avoir le nextval a 1(puis remettre increment by 1).
    mais , quand c'est pour r�initialiser suite a un contr�le .
    je doit rendre le dynamique.

    genre m�me si je ne connais pas la valeur courante .
    et apr�s quelque essais , je patine au niveau syntaxe j'arrive pas a valider la valeur courante en tant que nombre d'incrementation.

    exemple (grossier):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    alter seqeunce seqtest increment by -(select seqtest.currval from dual)
    alors pourriez vous m'orienter justement sur une fa�on qui me permettrait de faire �a ENCORE MERCI

  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
    Par d�faut
    pourquoi ne pas simplement effacer et recr�er la s�quence?

  3. #3
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut euh..
    ben,
    ce code doit etre implement� sur forms ?a vrais dire.

    il participe a un code articul� ("mmyy"-seqtest).

    donc dans mon apli je doit verifier tout le temp quel moi en est et au changement du moi la sequence se reinitialise .

    mais si , je doit recreer la sequence chaque mois , je devrais le faire depuis sqplus alors , pas depuis forms remarque !

    est ce que recreer ca ne consome pas plus de temp que de reinitialiser ?
    merci de m'eclairer

  4. #4
    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
    Par d�faut
    je ne vois pas l'avantage de faire alter plut�t que drop/create...

    Forms permets le "alter" et pas le "create"? bizarre...

  5. #5
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut hihi
    ben ,
    non j'ai pas dit �a (du tout) .forms permet peut �tre de faire des ddl avec la clause form_ddl(..);
    mais , selon toi (vous) , recr�er vaut autant que l'alter ,ou?.
    je voulais juste savoir, si �a ne co�tais pas plus de temps l'ex�cution(que d'alterer).

    ROGGER

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par d�faut
    La diff�rence doit �tre minime. Cela ne doit donc pas �tre un crit�re.

  7. #7
    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
    Par d�faut
    perso je trouve le drop/create plus simple, � toi de voir

  8. #8
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut
    donc ,
    elle sera drop cr�er chaque mois !
    entre autre , pourriez vous m'orienter syntaxiquement.
    je vais donc comparer (a l'aid d'un triger)sous forms chaque ouverture .
    le mois actuel et celui du code articul� .
    en gros :
    if (to_char(sysdate,'mm')<>T) --T est un parametre ou est stock� la pr�c�dente valeur (a l'ouverture) de sysdate
    then ""clause ddl ('drop sequence seq_test ; create sequence seqtest;')
    else T:=to_char(sysdate,'mm')
    Au faite create or replace est il faisable sur les s�quences!?

    En prime , je voudrais savoir quand on a une s�quence sur une colonne !
    si �a serait possible de mettre un trigger de base de donn�e

    INSTEAD OF INSERT pour faire qu'a chaque insertion l'identifiant s'ins�re depuis la s�quence !
    si c'est pas le cas conseilliez moi!

  9. #9
    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
    Par d�faut
    je ne connais pas la syntaxe forms, mais dans plsql, tu fais qqchose comme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    execute immediate 'drop sequence s'; execute immediate 'create sequence s';

    quant au trigger, c'est possible, mais ce n'est pas un INSTEAD OF trigger. Les instead of, c'est sur des vues.

    http://oracle.developpez.com/faq/?pa...#autoincrement

  10. #10
    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
    Par d�faut
    si tu as une version r�cente tu peux aussi faire

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    BEGIN
       :NEW.macolonne_PK := MaSequence.NEXTVAL
    END;
    /
    � l'avenir, merci de pr�ciser ta version

  11. #11
    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
    plut�t :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    BEGIN
       SELECT MaSequence.NEXTVAL INTO :NEW.macolonne_PK  
         FROM DUAL;
    END;
    /

  12. #12
    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

  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
    j'aurais d� deviner

  14. #14
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut euh ..?
    Premi�rement,
    je tient a m'excuser pour la version (c'est vrai ).
    c'est la version 9.2 i (et 10g pour le developper).
    donc pas une version r�cente (10g )
    si je comprend bien pour la premiere question : je fait

    la commande ex�cute imediate dans ma clause ddl "
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    execute immediate 'drop sequence s'; execute immediate 'create sequence s';"
    je vais aussi donner ce privil�ge (execute)!

    et pour la s�quence simple :je fait comme fred:
    CREATE SEQUENCE MaSequence
    CREATE TRIGGER MonTrigger
    BEFORE INSERT
    ON MaTable
    FOR EACH ROW
    BEGIN
    SELECT MaSequence.NEXTVAL
    INTO :NEW.macolonne_PK
    FROM DUAL;
    END;
    /
    au faite la 2eme question c'est pour une s�quence qui se r�initialise pas .
    si cetait le cas au moment du "drop seqtest" , le trigger ne p�terait pas par hasard !

  15. #15
    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
    non, soit tu recr�es soit tu incr�mentes de nextval apr�s avoir changer le pas d'incr�ment 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
    CREATE PROCEDURE reinit_Masequence
    ln$nextval number;
    BEGIN
    SELECT MaSequence.NEXTVAL
    INTO ln$nextval 
    FROM DUAL;
     
    execute immediate 'alter sequence Masequence increment by -' || ln$nextval ;
     
    SELECT MaSequence.NEXTVAL
    INTO ln$nextval 
    FROM DUAL;
     
    execute immediate 'alter sequence Masequence increment by 1'
     
    END;
    /

  16. #16
    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
    Par d�faut
    c'est une bonne remarque, mais il p�terait aussi avec alter (en tout cas dans vos versions pr�historiques...)

    en fait, il est invalid�, mais au prochaine insert il sera recompil�.

    pour que �a soit plus propre, tu peux ajouter apr�s drop sequence / create sequence
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ALTER TRIGGER tontrigger COMPILE;

  17. #17
    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
    Par d�faut
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    SQL> create table t (x number,y number);
     
    Table created.
     
    SQL> create sequence s;
     
    Sequence created.
     
    SQL> create or replace trigger tr before insert on t for each row
      2  begin select s.nextval into :new.x from dual; end;
      3  /
     
    Trigger created.
     
    SQL> insert into t(y) values (1);
     
    1 row created.
     
    SQL> select * from t;
     
             X          Y
    ---------- ----------
             1          1
     
    SQL> drop sequence s;
     
    Sequence dropped.
     
    SQL> create sequence s;
     
    Sequence created.
     
    SQL> select status from user_objects where object_name='TR';
     
    STATUS
    -------
    INVALID
     
    SQL> insert into t(y) values (2);
     
    1 row created.
     
    SQL> select * from t;
     
             X          Y
    ---------- ----------
             1          1
             1          2
     
    SQL> select status from user_objects where object_name='TR';
     
    STATUS
    -------
    VALID
     
    SQL> commit;
     
    Commit complete.

  18. #18
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut
    donc ,
    j'ai l'embarras du choix , et franchement vous �tes top gentils (merci pour le code , qui plus est a �t� ex�cute).
    J'utilise seulement l'un des codes sis dessus(soit drop soit alter).



    PS:j'ai mon script de cr�ation de base de donn�s(ma base)!
    Et comme je suis presque seul a continuer mon projet(ni prof ni bin�me ) .


    serait ce possible de le joindre dans ce topic ,ou un autre :

    pour me conseiller sur les type ou format de donn�es des identifiant
    (a qui mettre une s�quence ?etc..)
    (doc et conception dispo bien sure !au cas ou!) "codification".

    parce que pour l'instant j'ai mis des (number,varchar) un peut partout
    Fichiers attach�s Fichiers attach�s

  19. #19
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut :)?
    bonjour ,
    merci pour vos code ca marche impec , j'ai finalement choisit l'alter au lieu du drop (a tester sur forms) qui marche sur sqlplus*.
    mais , comme mon apetit grandit :

    j'ai donc une question:
    supposons que j'ai des client de concessionnaire repartie sur 3service(vente,pi�ce d�tache , SAV).

    serait il possible (j'ai essay� en vain).de mettre un trigger
    BEFOR INSERT qui rajoutera un caract�re
    if la colonne service =vente then
    insert into :new.num_cli 'V'||seq_cli.nextval from dual
    if la colonne =piece then insert into ..'P'||seq_cli.nextval
    etc...
    A Vous les gars !
    Merci molto molto

  20. #20
    Membre confirm� Avatar de scofield
    Homme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Octobre 2006
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Par d�faut
    salut ,
    sauf , si j'abondone
    ALORS PAS D'id�e sur la question .
    M�me pas une
    allez !

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. ORA-01722: Nombre non valide + sqlloader
    Par damiano84 dans le forum SQL*Loader
    R�ponses: 9
    Dernier message: 20/05/2022, 20h09
  2. ORA-01722: Nombre non valide
    Par misa dans le forum Oracle
    R�ponses: 4
    Dernier message: 18/12/2007, 15h23
  3. Oracle - Nombre non valide
    Par pado_83 dans le forum JDBC
    R�ponses: 2
    Dernier message: 28/09/2006, 15h11
  4. [SQLLDR]ORA-01722: Nombre non valide
    Par syl2095 dans le forum Oracle
    R�ponses: 5
    Dernier message: 22/05/2006, 15h42
  5. R�ponses: 7
    Dernier message: 07/03/2006, 09h34

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