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.
Partager