sql >> Base de Datos >  >> RDS >> PostgreSQL

Pase un nombre de esquema y un nombre de tabla dinámicamente en FROM en una consulta de selección en Postgres

No necesita esas variables locales para el esquema y la tabla. Use la opción de formato para construir las consultas y EXECUTE para ejecutarlo dinámicamente

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 desea devolver el resultado de una consulta dinámica, puede usar

RETURNS TABLE y luego haz RETURN QUERY EXECUTE para devolver los resultados de la consulta.