Je crée une table temporaire avec l’ordre DECLARE GLOBAL TEMPORARY TABLE et je fais des INSERT dedans. Mes données sont visibles et sous-contrôle de validation jusqu’à un COMMIT. Dès lors, toutes les données sont effacées comme si j’avais fait un ROLLBACK ! C’est à rien y comprendre…
Par défaut, l’action exécutée sur une table temporaire lors d’un COMMIT est DELETE ALL ROWS (car une fois la transaction validée le système considère qu’on a plus besoin des données temporaires). Si on veut conserver les enregistrements, il faut déclarer la table de la façon suivante :
exec sql
DECLARE GLOBAL TEMPORARY TABLE BWRBCP
LIKE BWRBCP
WITH REPLACE
ON COMMIT PRESERVE ROWS ;