You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

43 lines
1.3 KiB

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;
BEGIN
w_tablename = tablename;
IF w_tablename = '' THEN
w_tablename = 't_articles';
END IF;
w_field_prefix = field_prefix;
IF w_field_prefix = '' THEN
w_field_prefix = 'article';
END IF;
EXECUTE 'UPDATE econom.p_profils
SET ' || w_field_prefix || '_id = ' || w_tablename || '.oid
FROM econom.' || 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;';
EXECUTE 'UPDATE econom.p_profils SET ' || w_field_prefix || '_id = 0 WHERE ' || w_field_prefix || '_id IS NULL;';
EXECUTE 'UPDATE econom.p_profils
SET
' || w_field_prefix || '_code = ' || w_tablename || '.code,
' || w_field_prefix || '_texte = ' || w_tablename || '.texte_court
FROM econom.' || 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_court);';
RETURN 'OK';
END;