return: text lang: plpgsql src: | DECLARE result TEXT; BEGIN DELETE FROM activite.t_actes_c WHERE oid NOT IN (SELECT oid FROM base.t_actes); UPDATE activite.t_actes_c SET code = t_actes.code, texte = t_actes.texte, texte_court = t_actes.texte_court, nomenclature = t_actes.nomenclature, classant = t_actes.classant, ccam_regroupement_id_1 = t_actes.ccam_regroupement_id_1, ccam_regroupement_code_1 = t_ccam_regroupements_1.code, ccam_regroupement_texte_1 = t_ccam_regroupements_1.texte, ccam_regroupement_id_4 = t_actes.ccam_regroupement_id_4, ccam_regroupement_code_4 = t_ccam_regroupements_4.code, ccam_regroupement_texte_4 = t_ccam_regroupements_4.code, chapitre_1_id = t_actes.chapitre_1_id, chapitre_1_code = t_actes.chapitre_1_code, chapitre_1_texte = t_actes.chapitre_1_texte, chapitre_2_id = t_actes.chapitre_2_id, chapitre_2_code = t_actes.chapitre_2_code, chapitre_2_texte = t_actes.chapitre_2_texte, chapitre_3_id = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END, chapitre_3_code = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END, chapitre_3_texte = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END, chapitre_4_id = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END ELSE t_actes.chapitre_4_id END, chapitre_4_code = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END ELSE t_actes.chapitre_4_code END, chapitre_4_texte = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END ELSE t_actes.chapitre_4_texte END, type_id = t_actes.type_id, type_code = t_actes.type_code, type_texte = t_actes.type_texte, topographie_1_id = t_actes.topographie_1_id, topographie_1_code = t_actes.topographie_1_code, topographie_1_texte = t_actes.topographie_1_texte, topographie_2_id = t_actes.topographie_2_id, topographie_2_code = t_actes.topographie_2_code, topographie_2_texte = t_actes.topographie_2_texte, action_id = t_actes.action_id, action_code = t_actes.action_code, action_texte = t_actes.action_texte, technique_id = t_actes.technique_id, technique_code = t_actes.technique_code, technique_texte = t_actes.technique_texte FROM base.t_actes JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_actes.ccam_regroupement_id_1 = t_ccam_regroupements_1.oid JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_actes.ccam_regroupement_id_4 = t_ccam_regroupements_4.oid WHERE t_actes_c.oid = t_actes.oid AND ( t_actes_c.code IS DISTINCT FROM t_actes.code OR t_actes_c.texte IS DISTINCT FROM t_actes.texte OR t_actes_c.texte_court IS DISTINCT FROM t_actes.texte_court OR t_actes_c.nomenclature IS DISTINCT FROM t_actes.nomenclature OR t_actes_c.classant IS DISTINCT FROM t_actes.classant OR t_actes_c.ccam_regroupement_id_1 IS DISTINCT FROM t_actes.ccam_regroupement_id_1 OR t_actes_c.ccam_regroupement_code_1 IS DISTINCT FROM t_ccam_regroupements_1.code OR t_actes_c.ccam_regroupement_texte_1 IS DISTINCT FROM t_ccam_regroupements_1.texte OR t_actes_c.ccam_regroupement_id_4 IS DISTINCT FROM t_actes.ccam_regroupement_id_4 OR t_actes_c.ccam_regroupement_code_4 IS DISTINCT FROM t_ccam_regroupements_4.code OR t_actes_c.ccam_regroupement_texte_4 IS DISTINCT FROM t_ccam_regroupements_4.code OR t_actes_c.chapitre_1_id IS DISTINCT FROM t_actes.chapitre_1_id OR t_actes_c.chapitre_1_code IS DISTINCT FROM t_actes.chapitre_1_code OR t_actes_c.chapitre_1_texte IS DISTINCT FROM t_actes.chapitre_1_texte OR t_actes_c.chapitre_2_id IS DISTINCT FROM t_actes.chapitre_2_id OR t_actes_c.chapitre_2_code IS DISTINCT FROM t_actes.chapitre_2_code OR t_actes_c.chapitre_2_texte IS DISTINCT FROM t_actes.chapitre_2_texte OR t_actes_c.chapitre_3_id IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END OR t_actes_c.chapitre_3_code IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END OR t_actes_c.chapitre_3_texte IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END OR t_actes_c.chapitre_4_id IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END ELSE t_actes.chapitre_4_id END OR t_actes_c.chapitre_4_code IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END ELSE t_actes.chapitre_4_code END OR t_actes_c.chapitre_4_texte IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END ELSE t_actes.chapitre_4_texte END OR t_actes_c.type_id IS DISTINCT FROM t_actes.type_id OR t_actes_c.type_code IS DISTINCT FROM t_actes.type_code OR t_actes_c.type_texte IS DISTINCT FROM t_actes.type_texte OR t_actes_c.topographie_1_id IS DISTINCT FROM t_actes.topographie_1_id OR t_actes_c.topographie_1_code IS DISTINCT FROM t_actes.topographie_1_code OR t_actes_c.topographie_1_texte IS DISTINCT FROM t_actes.topographie_1_texte OR t_actes_c.topographie_2_id IS DISTINCT FROM t_actes.topographie_2_id OR t_actes_c.topographie_2_code IS DISTINCT FROM t_actes.topographie_2_code OR t_actes_c.topographie_2_texte IS DISTINCT FROM t_actes.topographie_2_texte OR t_actes_c.action_id IS DISTINCT FROM t_actes.action_id OR t_actes_c.action_code IS DISTINCT FROM t_actes.action_code OR t_actes_c.action_texte IS DISTINCT FROM t_actes.action_texte OR t_actes_c.technique_id IS DISTINCT FROM t_actes.technique_id OR t_actes_c.technique_code IS DISTINCT FROM t_actes.technique_code OR t_actes_c.technique_texte IS DISTINCT FROM t_actes.technique_texte ); INSERT INTO activite.t_actes_c( oid, code, texte, texte_court, nomenclature, classant, ccam_regroupement_id_1, ccam_regroupement_code_1, ccam_regroupement_texte_1, ccam_regroupement_id_4, ccam_regroupement_code_4, ccam_regroupement_texte_4, chapitre_1_id, chapitre_1_code, chapitre_1_texte, chapitre_2_id, chapitre_2_code, chapitre_2_texte, chapitre_3_id, chapitre_3_code, chapitre_3_texte, chapitre_4_id, chapitre_4_code, chapitre_4_texte, type_id, type_code, type_texte, topographie_1_id, topographie_1_code, topographie_1_texte, topographie_2_id, topographie_2_code, topographie_2_texte, action_id, action_code, action_texte, technique_id, technique_code, technique_texte) SELECT t_actes.oid, t_actes.code, t_actes.texte, t_actes.texte_court, t_actes.nomenclature, t_actes.classant, t_actes.ccam_regroupement_id_1, t_ccam_regroupements_1.code AS ccam_regroupement_code_1, t_ccam_regroupements_1.texte_court AS ccam_regroupement_texte_1, t_actes.ccam_regroupement_id_4, t_ccam_regroupements_4.code AS ccam_regroupement_code_4, t_ccam_regroupements_4.texte_court AS ccam_regroupement_texte_4, t_actes.chapitre_1_id AS ccam_chapitre_1_id, t_actes.chapitre_1_code AS ccam_chapitre_1_code, t_actes.chapitre_1_texte AS ccam_chapitre_1_texte, t_actes.chapitre_2_id AS ccam_chapitre_2_id, t_actes.chapitre_2_code AS ccam_chapitre_2_code, t_actes.chapitre_2_texte AS ccam_chapitre_2_texte, CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END AS ccam_chapitre_3_id, CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END AS ccam_chapitre_3_code, CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END AS ccam_chapitre_3_texte, CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END ELSE t_actes.chapitre_4_id END AS ccam_chapitre_4_id, CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END ELSE t_actes.chapitre_4_code END AS ccam_chapitre_4_code, CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END ELSE t_actes.chapitre_4_texte END AS ccam_chapitre_4_texte, t_actes.type_id AS ccam_type_id, t_actes.type_code AS ccam_type_code, t_actes.type_texte AS ccam_type_texte, t_actes.topographie_1_id AS ccam_topographie_1_id, t_actes.topographie_1_code AS ccam_topographie_1_code, t_actes.topographie_1_texte AS ccam_topographie_1_texte, t_actes.topographie_2_id AS ccam_topographie_2_id, t_actes.topographie_2_code AS ccam_topographie_2_code, t_actes.topographie_2_texte AS ccam_topographie_2_texte, t_actes.action_id AS ccam_action_id, t_actes.action_code AS ccam_action_code, t_actes.action_texte AS ccam_action_texte, t_actes.technique_id AS ccam_technique_id, t_actes.technique_code AS ccam_technique_code, t_actes.technique_texte AS ccam_technique_texte FROM base.t_actes JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_actes.ccam_regroupement_id_1 = t_ccam_regroupements_1.oid JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_actes.ccam_regroupement_id_4 = t_ccam_regroupements_4.oid WHERE (t_actes.nomenclature IN ('CCAM', 'NGAP') OR t_actes.oid = 0) AND t_actes.oid NOT IN (SELECT oid FROM activite.t_actes_c); RETURN 'OK'; END;