Vous n'avez pas besoin de ces variables locales pour le schéma et la table. Utilisez l'option de format pour construire les requêtes et EXECUTE
pour l'exécuter dynamiquement
CREATE OR REPLACE FUNCTION xx.fn_build_test_(
IN p_var_archive_schema character varying,
IN p_var_archive_table character varying )
RETURNS record AS
$BODY$
DECLARE
l_var_test VARCHAR[];
BEGIN
SELECT array
( SELECT TO_CHAR(column_name,'YYYYMMDD')
FROM "test_table"
WHERE col1 = 1
) INTO l_var_test;
EXECUTE format (
'select col_name FROM %I.%I',
p_var_archive_schema,p_var_archive_table)
--INTO rec_variable;
END;
$BODY$
LANGUAGE plpgsql
VOLATILE SECURITY INVOKER;
Si vous souhaitez renvoyer le résultat d'une requête dynamique, vous pouvez utiliser
RETURNS TABLE
puis faites RETURN QUERY EXECUTE
pour renvoyer les résultats de la requête.