return: text
|
|
lang: plpgsql
|
|
parameters:
|
|
p0:
|
|
type: text
|
|
name: tablename
|
|
p1:
|
|
type: text
|
|
name: field_prefix
|
|
src: |
|
|
DECLARE
|
|
w_tablename TEXT;
|
|
w_field_prefix TEXT;
|
|
result TEXT;
|
|
t0 timestamp;
|
|
t1 timestamp;
|
|
t2 timestamp;
|
|
t3 timestamp;
|
|
BEGIN
|
|
w_tablename = tablename;
|
|
IF w_tablename = '' THEN
|
|
w_tablename = 't_codes_emploi';
|
|
END IF;
|
|
|
|
w_field_prefix = field_prefix;
|
|
IF w_field_prefix = '' THEN
|
|
w_field_prefix = 'code_emploi';
|
|
END IF;
|
|
|
|
RAISE NOTICE 'Traitement de %', w_tablename;
|
|
t0 = clock_timestamp();
|
|
EXECUTE 'UPDATE rh.p_profils
|
|
SET ' || w_field_prefix || '_id = ' || w_tablename || '.oid
|
|
FROM rh.' || w_tablename || '
|
|
WHERE ' || w_tablename || '.code_original = p_profils.' || w_field_prefix || '_code_original
|
|
AND ' || w_field_prefix || '_id IS DISTINCT FROM ' || w_tablename || '.oid;';
|
|
t1 = clock_timestamp();
|
|
EXECUTE 'UPDATE rh.p_profils SET ' || w_field_prefix || '_id = 0 WHERE ' || w_field_prefix || '_id IS NULL;';
|
|
t2 = clock_timestamp();
|
|
EXECUTE 'UPDATE rh.p_profils
|
|
SET
|
|
' || w_field_prefix || '_code = ' || w_tablename || '.code,
|
|
' || w_field_prefix || '_texte = ' || w_tablename || '.texte
|
|
FROM rh.' || w_tablename || '
|
|
WHERE ' || w_tablename || '.oid = p_profils.' || w_field_prefix || '_id
|
|
AND (' || w_field_prefix || '_code IS DISTINCT FROM ' || w_tablename || '.code OR
|
|
' || w_field_prefix || '_texte IS DISTINCT FROM ' || w_tablename || '.texte);';
|
|
t3 = clock_timestamp();
|
|
|
|
RAISE NOTICE 'Total % (1 : %; 2 : %; 3 : %)', t3 - t0, t1 - t0, t2 - t1, t3 - t2;
|
|
RETURN 'OK';
|
|
END;
|