Bonjour, je souhaite créer grâce à SQL dans un programme RPG une table temporaire (dans QTEMP) et écraser une éventuelle table préexistante de même nom. Sa description pourra soit être celle d’une table permanente, soit être définie entièrement. Quelle instruction puis-je utiliser ?
Il est également possible de définir cette table temporaire comme le résultat d’un SELECT. Dans ce cas elle pourra être peuplée (WITH DATA) ou pas (WITH NO DATA) :
DECLARE GLOBAL TEMPORARY TABLE CORR_SAP_AGCEXP AS (
select
sap.cscom1 as cagsap,
substr(sap.csccod, 1, 1) as CSOCTE,
substr(sap.csccod, 2, 2) as CAGCOM,
bn.csccod as CAGEXP
from
bfbase.satabp as sap
inner join bfbase.bntabp as bn
on bn.cscom2 = substr(sap.csccod, 1, 1) and bn.cscom1 = substr(sap.csccod, 2, 2)
where
sap.cscprm = ‘SLOFF’
and bn.cscprm = ‘AGCOR’
order by
sap.cscom1)
with DATA WITH REPLACE ;
L’instruction sql « declare global temporary table » peut être embarquée dans un programme sqlrpgle.
Sa forme peut être si on a un modèle :
declare global temporary table w_bcpasp like bcpasp with replace;
Si on n’a pas de modèle :
declare global temporary table W_TABLE (
ZONE1 CHAR(10) ,
ZONE2 CHAR(10) ,
ZONE3 CHAR(6) ,
ZONE4 CHAR(10) ) with replace