return: text lang: plpgsql parameters: p0: type: text name: i_from_table p1: type: text name: i_to_table src: | DECLARE _sqlcmd TEXT; result TEXT; BEGIN IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = i_to_table) THEN _sqlcmd = ' CREATE TEMP TABLE ' || i_to_table || ' ( XXCENT numeric, XXCETS numeric, XXCODO text, XXCODE text, in_code text, in_code_original text, in_texte text, in_id bigint ); CREATE INDEX ' || i_to_table || '_i1 ON ' || i_to_table || ' USING btree(XXCODO) ' ; EXECUTE _sqlcmd; END IF; -- Table de correspondance _sqlcmd = ' TRUNCATE ' || i_to_table || ' ; INSERT INTO ' || i_to_table || ' SELECT XXCENT, XXCETS, XXCODO, XXCODE, XXCODE || CASE WHEN base.cti_soundex_nom(replace(XXTEXT,''.'','''')) <> XXTEXT_STD_soundex THEN ''('' || XXCENT || ''.'' || XXCETS || '')'' ELSE '''' END AS in_code, XXCODO || CASE WHEN base.cti_soundex_nom(replace(XXTEXT,''.'','''')) <> XXTEXT_STD_soundex THEN ''_'' || to_char(XXCENT,''FM000'') || to_char(XXCETS,''FM000'') ELSE '''' END AS in_code_original, CASE WHEN base.cti_soundex_nom(replace(XXTEXT,''.'','''')) <> XXTEXT_STD_soundex THEN XXTEXT ELSE XXTEXT_STD END AS in_texte, 0::bigint AS in_id FROM ' || i_from_table || ' JOIN ( SELECT XXCODE AS XXCODE_STD, (MAX(Array[key, XXTEXT_soundex]))[2] AS XXTEXT_STD_soundex, (MAX(Array[key, XXTEXT_STD]))[2] AS XXTEXT_STD FROM ( SELECT XXCODE, base.cti_soundex_nom(replace(XXTEXT,''.'','''')) AS XXTEXT_soundex, MIN(XXTEXT) AS XXTEXT_STD, to_char(count(*),''FM0000000000'') || MIN(to_char(XXCENT,''FM000'') || to_char(XXCETS,''FM000'')) AS key FROM ' || i_from_table || ' GROUP BY 1,2 ) subview GROUP BY 1 ) cti_shs_multicode_std ON XXCODE = XXCODE_STD ORDER BY 3,5 ;' ; EXECUTE _sqlcmd; RETURN 'OK'; END;