Bonjour,

tout d'abord je travaille sur la version:

Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


j'ai une requête dans ma procédure PL-SQL qui ne me renvoie rien ...
alors que testée à part en SQL elle me renvoie 2 lignes de données ?!

Voici la requête (ne cherchez pas à la comprendre forcément puisque elle est testée et fonctionnelle) dans son curseur et son exploitation (extraits résumé de la procédure PL-SQL):

[.../...]

CURSOR curseur( PE$Edition VARCHAR2, PE$AnMoisSem PLS_INTEGER)
IS

SELECT distinct max(en3.edi_mnemo) c_edition, replace(oe.ord_ref_interne || to_char(ins.ins_no_encart,'00'),' ','') c_numord,
max(replace(pn3.par_num,' ','')) c_dernump, CT.cli_soc
FROM ordre oe, insertion ins, client ct, edition en, parution pn,
insertion ins3, parution pn3, ordre oe3, edition en3
WHERE oe.ord_id = ins.ord_id and ins.edi_id = en.edi_id
and ins.par_id = pn.par_id and en.edi_id = pn.edi_id
and ct.cli_id = oe.cli_id
and en.edi_mnemo in (PE$Edition)
and pn.par_annee || pn.par_mois || pn.par_semaine = PE$AnMoisSem
and nvl(oe.ord_quotepart_fact,100)=100
and ins3.par_id = pn3.par_id and en3.edi_id = pn3.edi_id
and oe3.ord_id = ins3.ord_id and ins3.edi_id = en3.edi_id
and (oe3.ord_ref_interne = oe.ord_ref_interne and ins3.ins_no_encart = ins.ins_no_encart)
and pn3.par_date = (select max(pn1.par_date)
from parution pn1, insertion ins1
where ins1.par_id = pn1.par_id
and ins1.ord_id = oe.ord_id
and pn1.par_date < pn.par_date)
group by replace(oe.ord_ref_interne || to_char(ins.ins_no_encart,'00'),' ',''), CT.cli_soc
order by 3,2 ;


-- $$ Variables d'accueil:
LN$NumOrd ORDRE.ord_ref_interne%Type ;
LN$DerPar PARUTION.par_num%Type ;
LN$Edition EDITION.edi_mnemo%Type;
LN$Client CLIENT.cli_soc%Type;

[.../...]

Open curseur(editions_pub, LU$AnMoisSem) ; -- ouverture du curseur

LOOP -- << PARCOURS des ENREGISTREMENTS ORACLE >> ligne.[ ]

Fetch curseur Into LN$Edition, LN$NumOrd, LN$DerPar, LN$Client ; -- Lecture d'une ligne

dbms_output.put_line('LN$Edition=' || LN$Edition || 'LN$NumOrd=' || LN$NumOrd || 'LN$DerPar=' || LN$DerPar || 'LN$Client=' || LN$Client);

[.../...]
Pour information les variables de la requête passées au curseur sont (récupérée en direct par le débeugeur):

PE$Edition ='EDI1','EDI2','EDI3'
PE$AnMoisSem =200682
Et le résultat du dernier "dbms_output.put_line" :

LN$Edition=LN$NumOrd=LN$DerPar=LN$Client=
=> rien du tout

J'insiste bien que la requête testée avec les variables citées ci-dessus (extraites de la procédure qui tourne) fonctionne bien et me renvoie 2 lignes de données ... donc pourquoi pas avec ma procédure ?

Merci beaucoup pour vos idées

PS: j'avais dans l'idée de récupérer l'instruction SQL extraite lors du déroulement de la procédure mais je ne vois pas comment faire.