Не се нуждаете от тези локални променливи за схема и таблица. Използвайте опцията за форматиране, за да конструирате заявките и EXECUTE
за да го стартирате динамично
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;
Ако искате да върнете резултата от динамична заявка, можете да използвате
RETURNS TABLE
и след това направете RETURN QUERY EXECUTE
за да върнете резултати от заявката.