-- 1/3 : Création de la table temporaire DROP TABLE IF EXISTS w_dbsetup ; CREATE TEMP TABLE w_dbsetup AS SELECT CASE WHEN oid = 0 THEN oid ELSE 1 END AS oid, code, texte FROM activite.t_etat_sejour ORDER BY code LIMIT 0 ; -- 2/3 : Peuplement de la table temporaire INSERT INTO w_dbsetup( oid, code, texte ) VALUES (0, '0', 'Prévu(s)'), (1, '1', 'Présent(s)'), (1, '2', 'Présent(s) avec facturation partielle'), (1, '3', 'Sorti(s) non groupé(s)'), (1, '4', 'Sorti(s) facturable(s)'), (1, '5', 'Sorti(s) non facturé(s) avec facturation partielle'), (1, '6', 'Facturé(s) non soldé(s)'), (1, '7', 'Soldé(s)'), (1, '8', 'Non facturable(s) ou récusé(s)'), (1, '9', 'Fictif(s)'), (1, '?', '???'), (1, 'A', 'Annulé(s)'), (1, 'C', 'Suspendu(s)'), (1, 'R', 'Récusé(s)') ; -- 3/3 : Màj de la table iCTI UPDATE activite.t_etat_sejour SET code = w_dbsetup.code, texte = w_dbsetup.texte FROM w_dbsetup WHERE w_dbsetup.oid = t_etat_sejour.oid AND w_dbsetup.oid = 0; UPDATE activite.t_etat_sejour SET texte = w_dbsetup.texte FROM w_dbsetup WHERE 1=1 AND activite.t_etat_sejour.code = w_dbsetup.code AND activite.t_etat_sejour.texte IS DISTINCT FROM w_dbsetup.texte ; INSERT INTO activite.t_etat_sejour(oid, code, texte) SELECT oid, code, texte FROM w_dbsetup WHERE 1=1 AND oid = 0 AND oid NOT IN (SELECT oid FROM activite.t_etat_sejour) ; INSERT INTO activite.t_etat_sejour(code, texte) SELECT code, texte FROM w_dbsetup WHERE 1=1 AND oid <> 0 AND code NOT IN (SELECT code FROM activite.t_etat_sejour) ;