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 :

SQLCBL : probleme avec la fonction Sequence


Sujet :

DB2

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 176
    Points : 188
    Points
    188
    Par défaut SQLCBL : probleme avec la fonction Sequence
    Bonjour,

    Je suis actuellement en train de travailler sur un programme CobolSQL sous AS/400, qui prend des données d'un fichiers et les place dans un autre fichier (jusque la tout va bien)

    La ou tout se complique est lorsqu'en plus des données (normales) il m'a fallu insérer dans le fichier "résultat" une clef unique : un code pays suivi d'un numéro incrémenté au fur et a mesure.

    J'ai découvert alors l'utilisation des séquences, qui répond à mon attente.

    sous STRSQL, j'arrive à créer ma séquence, l'utiliser, etc.

    Mais dans le SQLCBL, ma requête de création de séquence sort en erreur et fait planter mon programme :

    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
    MOVE SPACE TO W-REQUETE-SQL                  
    STRING                                       
    "CREATE SEQUENCE SEQSWIFT "                 
    "AS INTEGER "                               
    " START WITH "                              
    WW-COMPTAGE-debut     (cette donnée est à 01)                      
    " INCREMENT BY 1 "                          
    "NO MINVALUE "                              
    "MAXVALUE 999999 "                           
    "NO CYCLE "                                             
    "CACHE 50 "                                             
    "ORDER "                               DELIMITED BY SIZE
    INTO W-REQUETE-SQL.                                    
    EXEC SQL                                                 
       EXECUTE IMMEDIATE :W-REQUETE-SQL                      
    END-EXEC.
    Si je copie la string ainsi définie telle quelle dans STRSQL la séquence se crée, mais pas dans le programme.

    J'ai cherché sur le net le code erreur (-7017 si je ne me suis pas trompé) et l'explication ne m'est pas très utile...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Explanation: Commitment control is already active to a DDM target.
    Est ce que quelqu'un a déjà utilisé cette fonction dans un programme?

    Merci d'avance,

    P.S.
    Je ne sais pas exactement ou placer ce post, parce qu'il pourrait se promener entre DB2, AS400... Prière de le déplacer en cas de besoin.

  2. #2
    Membre expérimenté

    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
    Points : 1 578
    Points
    1 578
    Par défaut
    Un contrôle de validation est en cours et n'a pas été encore validé (COMMIT) ou invalidé (ROLLBACK). Aucune autre opération ne peut avoir lieu sur la table ou la séquence tant que l'opération en cours n'est pas terminée.

    Solution probable :

    1/ Faire COMMIT ou ROLLBACK sous "STRSQL"

    2/ Ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     EXEC SQL                                                 
       SET OPTION COMMIT = *NONE                     
     END-EXEC
    .

    3/ Relancer le programme COBOL.

    Mais, au lieu d'utiliser une séquence SQL, dans la mesure où j'ai bien compris ce que tu cherches à faire, j'aurais plutôt utilisé un incrément automatique avec une colonne identitaire "GENERATED ALWAYS" pour créer ma clé unique pays-séquence.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 176
    Points : 188
    Points
    188
    Par défaut
    Merci, effectivement ca fonctionne (j'ai directement intégré l'option de controle de validation *none lors de la compilation en fait)

    Pour la colonne identitaire j'y avais pensé, mais le fichier de sortie existe déjà et je ne suis pas sensé le modifier, juste insérer des données dedans... c'est pour ca que je me suis rabattu sur une concaténation d'une donnée (pays) et d'une valeur séquence.

    Merci en tout cas !

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

Discussions similaires

  1. Probleme avec la fonction Ontimer
    Par Djule dans le forum MFC
    Réponses: 8
    Dernier message: 27/11/2005, 17h52
  2. Probleme avec la fonction rename()
    Par TheZenZen dans le forum C
    Réponses: 6
    Dernier message: 08/10/2005, 15h59
  3. [LG] Problème avec la Fonction ReadLn en fin de programme
    Par killermano dans le forum Langage
    Réponses: 6
    Dernier message: 23/07/2005, 15h16
  4. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48

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