Bonjour,
J'ai un souci avec du SQl Dynamique.
J'ai un package, qui contient une procédure (avec une année en entrée).
Cette procédure a pour but d'alimenter une table.
Voici le code, ce sera peut-être plus simple à comprendre :
--
as
procedure creat_table (annee_fin IN INTEGER) is
ordre VARCHAR2(2000);
i_datfin DATE := to_date('3112'||to_char(annee_fin, '9999'), 'DDMMRRRR');
fin_annee DATE := to_date('3112'||to_char(sysdate, 'RRRR'), 'DDMMRRRR');
begin
ordre := 'truncate table a.coef_voisins';
execute immediate ordre;
ordre := 'insert into a.coef_voisins
select agt_matricule,
nvl(recup_dernier_coef2 (agt_matricule,:1), 0) old_coef,
nvl(recup_dernier_coef2 (agt_matricule,:2), 0) new_coef,
nvl(recup_college (agt_matricule,:3), ''X'') old_college
from ad.agents
where (agt_date_embauche <= :4
and (agt_date_depart is null or agt_date_depart > :5))';
execute immediate ordre using i_datfin, fin_annee, i_datfin,i_datfin, fin_annee;
commit;
end creat_table;
end;
--
Ce code fonctionne lorsque je le "sors" du package pour le coller dans TOAD, mais lorsque j'appelle cette procédure à partir du package, j'ai une erreur 904 "colonne invalide".
les "recup---" sont des fonctions, lorsque je les remplace par des valeurs fixes, ça fonctionne.
Je sais qu'à l'heure actuelle, je n'aurais pas besoin de SQl dynamique pour faire ça, mais ça va se compliqer, et là j'en aurais besoin.
Si vous avez des pistes, je suis preneur, je crois avoir tout tenté.
Merci d'avance pour votre aide.
Partager