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

DB2 Discussion :

ALTER SEQUENCE RESTART WITH.


Sujet :

DB2

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut ALTER SEQUENCE RESTART WITH.
    Salut,
    je travaille sur Z/OS DB2 V8, avec l'AGL PACBASE.

    Je souhaite effectuer une migration sur des données pour intégrer une gestion de SEQUENCE DB2.

    - J'ai créé une séquence.
    - Je possède une table m'indiquant le dernier identifiant affecté
    - Je souhaiterais modifier ma SEQUENCE pour débuter à partir de ce numéro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EXQ ALTER SEQUENCE Nomseq         
        RESTART WITH :DB00-NUDID
    Je n'arrive pas à variabiliser la valeur aprés le RESTART WITH, il n'accepte apparemment que un <INTEGER> ou un <DECIMAL>. Est ce que certains d'entre vous on déjà rencontré ce problème ?

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Par défaut
    Comment est déclaré ta host-variable DB00-NUDID ?

    Peux-tu mettre le code de ton CREATE SEQUENCE ?

    .

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut
    Voici pour la création :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE SEQUENCE Nomseq AS DECIMAL (8,00)          
     START WITH 1                                     
     INCREMENT BY 1                                   
     MAXVALUE 99999999                                
     NO CYCLE                                         
     NO CACHE
    Ensuite je récupère dans une table la colonne NUDID en S9(9) COMP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    10            DB00-NUDID  PICTURE  S9(9)  
                  BINARY.
    puis j'essaye de passer l'alter comme décrit plus haut.

    le message après compil est clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSNH104I DSNHPARS  ILLEGAL SYMBOL ":". SOME SYMBOLS THAT MIGHT BE LEGAL ARE : <DECIMAL> <INTEGER>
    Merci d'avance.

  4. #4
    Membre émérite Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Par défaut
    Ta host-variable est bien en Working?

    .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut
    oui, c'est le segment de réception de ma donnée DB2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WORKING-STORAGE SECTION.                        
    BEGIN DB2          DB00                         
    01                 DB00.                        
     
         10            DB00-CDTAB  PICTURE  X(4).   
         10            DB00-ZB110  PICTURE  X(110). 
         10            DB00-NUDID  PICTURE  S9(9)   
                       BINARY.

    j'ai essayé avec une zone spécifique, même combat !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    05              WW00-ZN009       
                  PICTURE S9(9)      
                    BINARY.

  6. #6
    Membre émérite Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Par défaut
    Je ne vois pas pour quelle raison ton host-variable n'est pas prise en compte par contre je m'interroge sur la pertinence de cette variable.

    En effet, d'après ce que je comprend de la doc, la numeric-constant qui suit le WITH est la valeur à laquelle est redémarrer la séquence, je ne pense pas que la séquence redémarre au niveau de la valeur de DB00-NUDID que tu lui indiques. (Que ce passe-t-il si tuple sur cette colonne ?)

    Citation Envoyé par DB2 UDB for z/OS v8
    WITH numeric-constant :
    Specifies the value at which to restart the sequence. The value can be any positive or negative value that could be assigned to the a column of the data type that is associated with the sequence without non-zero digits existing to the right of the decimal point.
    Je passe la main , tiens nous au courant
    .

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    On ne peut pas utiliser de variables directement dans les instructions CREATE SEQUENCE et ALTER SEQUENCE, seules sont supportées des constantes numériques.

    Passer par SQL dynamique pour contourner cette contrainte.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    01 STMT.
        05 FILLER     PIC X(35) 
        VALUE "ALTER SEQUENCE Nomseq RESTART WITH ".
        05 RSTRT_VAL  PIC X(8).
     
        MOVE DB00-NUDID TO RSTRT_VAL.
     
        EXQ EXECUTE IMMEDIATE :STMT.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Par défaut
    J'aurais tendance à dire que ce n'est pas possible du moins je n'ai pas vu de référence à une host variable dans la doc. Par contre, ça marche si tu fais du dynamique dans ton programme (execute immediate).

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Par défaut
    zut, me suis fait griller par Mercure.

  10. #10
    Membre émérite Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Par défaut

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut
    Merci à vous tous

    En revanche il me sera difficile de mettre du SQL Dynamique dans les productions de mes clients...

  12. #12
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Tu pourras toujours leur dire que, s'ils rechignent, on ne fait pas d'omelette sans casser les oeufs.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut
    Au fait c'est testé ca marche au bémol de la longueur qu'il faut fournir en plus.

    Pour mémoire en Working :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    01               STMT.                          
       05            STMT-LIB PIC X(35) VALUE       
              'ALTER SEQUENCE MaSeq RESTART WITH '.
       05              STMT-VAL  PIC X(8).          
     
    01               STRI-VAR.                      
       49            STRI-LGTH   PIC S9(4) BINARY.  
       49            STRI-VAL    PIC X(43).
    dans la procédure division :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    M   DB00-NUDID     STMT-VAL         
    M   STMT           STRI-VAL         
    M   LENGTH OF STMT STRI-LGTH        
    EXQ SET CURRENT SQLID = :WW00-IDSQL 
    EXQ EXECUTE IMMEDIATE :STRI-VAR
    Merci à vous en tous les cas

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

Discussions similaires

  1. Firebird Embedded et ALTER SEQUENCE
    Par evarisnea dans le forum Firebird
    Réponses: 2
    Dernier message: 17/06/2008, 22h16
  2. alter sequence increment by (select..) nombre non valid!?
    Par scofield dans le forum Sql*Plus
    Réponses: 24
    Dernier message: 13/09/2007, 01h40
  3. Réponses: 10
    Dernier message: 30/10/2006, 14h44
  4. alter sequence
    Par marti dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/08/2005, 07h53
  5. Suite : alter sequence
    Par marti dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/08/2005, 06h43

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