Variabiliser le sch�ma � l'ex�cution de requ�te SQL
Posté : jeu. 05 déc. 2019, 09:16:15
Bonjour,
Je voudrais dans un free RPG exécuter une requête SQL sur un fichier se trouvant dans 2 bibliothèques (bibliothèque de production et bibliothèque de sauvegarde).
Je veux intervenir sur le fichier se trouvant dans la bibliothèque de sauvegarde (derrière la bibliothèque de production dans *LIBL).
Je récupère le nom de mes bibliothèques dans une Data Area.
J'ai essayé via cette méthode mais ça ne fonctionne pas (la requête s'exécute sur le fichier se trouvant dans la bibliothèque de production) :
dcl-ds *n dtaara(*auto);
Liste_Bib char(1024);
end-ds;
dcl-s Bib_Prod char(10);
dcl-s Bib_SAVDTA char(10);
Bib_Prod = %subst(Liste_Bib:350:10);
Bib_SAVDTA = %subst(Liste_Bib:370:10);
exec sql
set current schema = :Bib_SAVDTA;
exec sql
set path = :Bib_SAVDTA, current path;
EXEC SQL
delete
from COMMANDE
where timestampdiff(256,
cast(current_timestamp -
cast(date(case when BCALIV < 75 then '20' else '19' end
|| digits(BCALIV) || '-' || digits(BCMLIV) || '-' || digits(BCJLIV)
) as timestamp) as char(22)) ) > 5;
Ma demande est-elle réalisable ?
Merci d'avance
Je voudrais dans un free RPG exécuter une requête SQL sur un fichier se trouvant dans 2 bibliothèques (bibliothèque de production et bibliothèque de sauvegarde).
Je veux intervenir sur le fichier se trouvant dans la bibliothèque de sauvegarde (derrière la bibliothèque de production dans *LIBL).
Je récupère le nom de mes bibliothèques dans une Data Area.
J'ai essayé via cette méthode mais ça ne fonctionne pas (la requête s'exécute sur le fichier se trouvant dans la bibliothèque de production) :
dcl-ds *n dtaara(*auto);
Liste_Bib char(1024);
end-ds;
dcl-s Bib_Prod char(10);
dcl-s Bib_SAVDTA char(10);
Bib_Prod = %subst(Liste_Bib:350:10);
Bib_SAVDTA = %subst(Liste_Bib:370:10);
exec sql
set current schema = :Bib_SAVDTA;
exec sql
set path = :Bib_SAVDTA, current path;
EXEC SQL
delete
from COMMANDE
where timestampdiff(256,
cast(current_timestamp -
cast(date(case when BCALIV < 75 then '20' else '19' end
|| digits(BCALIV) || '-' || digits(BCMLIV) || '-' || digits(BCJLIV)
) as timestamp) as char(22)) ) > 5;
Ma demande est-elle réalisable ?
Merci d'avance