PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Übergeben Sie einen Schemanamen und Tabellennamen dynamisch in FROM in einer Auswahlabfrage in Postgres

Sie benötigen diese lokalen Variablen nicht für Schema und Tabelle. Verwenden Sie die Formatoption, um die Abfragen zu erstellen, und EXECUTE um es dynamisch auszuführen

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; 

Wenn Sie das Ergebnis einer dynamischen Abfrage zurückgeben möchten, können Sie

verwenden

RETURNS TABLE Option und führen Sie dann RETURN QUERY EXECUTE aus um Ergebnisse aus der Abfrage zurückzugeben.