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

Langage SQL Discussion :

Problème de Curseur


Sujet :

Langage SQL

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 1
    Par défaut Problème de Curseur
    Bonjour à tous.

    Voilà depuis hier après midi, je suis bloqué sur cette procédure,
    et je ne vois pas où cela cloche.

    La procédure (en bleu c'est là que ça coince ):


    BEGIN
    declare v_code_type_erreur int;
    declare compteur bigint default 0;
    declare v_count bigint;
    declare at_end int default 0;
    declare v_TYPE_DOSSIER varchar(1);
    declare v_COD_TYP_DOSS_GEO varchar(3);
    declare not_found condition for sqlstate '02000';
    declare v_COD_TYPE_ERR_BDX varchar(50);

    set o_msg='';

    SELECT D_TYPE_DOSSIER, COD_TYPE_DOSS_GEO into v_TYPE_DOSSIER, v_COD_TYP_DOSS_GEO
    FROM ADMDB2.T530_DOSSIERS
    WHERE D_NUM_DOSSIER = i_num_dossier
    AND COD_COLLECTEUR = i_cod_collecteur;

    UPDATE ADMDB2.T530_DOSSIERS
    SET D_ERREURS = ''
    WHERE D_NUM_DOSSIER = i_num_dossier AND COD_COLLECTEUR = i_cod_collecteur;


    DECLARE cur CURSOR FOR
    SELECT COD_TYPE_ERREUR
    FROM ADMDB2.T517_ERREUR_DOSSIER
    WHERE D_NUM_DOSSIER = i_num_dossier
    AND COD_COLLECTEUR = i_cod_collecteur;

    declare CONTINUE HANDLER FOR not_found SET at_end = 1;
    SELECT Count(1) into v_count
    FROM ADMDB2.T517_ERREUR_DOSSIER
    WHERE D_NUM_DOSSIER = i_num_dossier AND COD_COLLECTEUR = i_cod_collecteur;


    OPEN cur;

    ins_loop:
    loop
    if compteur >= v_count then
    LEAVE ins_loop;
    end if;

    FETCH cur INTO v_code_type_erreur;

    SELECT COD_TYPE_ERR_BDX into v_COD_TYPE_ERR_BDX
    FROM ADMDB2.T508_TYPE_ERREUR_BDX
    WHERE COD_TYPE_ERREUR = v_code_type_erreur
    AND COD_COLLECTEUR = i_cod_collecteur
    AND COD_TYP_DOSS_GEO = v_COD_TYP_DOSS_GEO
    AND D_TYPE_DOSSIER = v_TYPE_DOSSIER;

    set o_msg = o_msg concat ', ' concat v_COD_TYPE_ERR_BDX;
    set compteur = compteur + 1;

    END loop ins_loop;

    CLOSE cur;

    UPDATE ADMDB2.T530_DOSSIERS
    SET D_ERREURS = o_msg
    WHERE D_NUM_DOSSIER = i_num_dossier
    AND COD_COLLECTEUR = i_cod_collecteur;

    END @

    Ci dessous le message d'erreur :

    27/07/2006 09:13:45 DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit pas d'une commande valide pour l'interpréteur de commandes. Le message SQL suivant a été renvoyé lors de son traitement :
    27/07/2006 09:13:45 SQL0104N Une marque inattendue "<cursor declaration>" figure à la suite de "". Parmi les marques attendues, on trouve : "<SQL statement>". LINE NUMBER=36. SQLSTATE=42601

    27/07/2006 09:13:45 GRANT EXECUTE ON PROCEDURE ADMDB2.GENERR TO PUBLIC
    27/07/2006 09:13:45 DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit pas d'une commande valide pour l'interpréteur de commandes. Le message SQL suivant a été renvoyé lors de son traitement :
    27/07/2006 09:13:45 SQL0204N Le nom "ADMDB2.GENERR" n'est pas défini. SQLSTATE=42704


    Voilà, si quelqu'un sait comment faire, merci du coup de pouce.

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Merci de préciser le SGBD ? Ce sujet sera déplacé dans le forum lui correspondant, le forum SQL ne traitant pas des langages procéduraux
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/03/2008, 11h36
  2. Problème de curseur avec champ déscativé/activé
    Par picatchou dans le forum Access
    Réponses: 2
    Dernier message: 07/09/2006, 17h32
  3. [Oracle][Spring] Problème de curseurs
    Par romaintaz dans le forum JDBC
    Réponses: 1
    Dernier message: 21/08/2006, 15h06
  4. [MSDE] Problème de curseur dans une SP
    Par papouAlain dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/07/2005, 11h28
  5. [Trigger] Problème de curseur
    Par Superstivix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/06/2004, 10h30

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