sql >> Databáze >  >> RDS >> PostgreSQL

Předejte název schématu a název tabulky dynamicky v FROM ve výběrovém dotazu v Postgres

Tyto lokální proměnné pro schéma a tabulku nepotřebujete. K vytvoření dotazů použijte volbu formátu a EXECUTE spouštět jej dynamicky

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; 

Pokud chcete vrátit výsledek dynamického dotazu, můžete použít

RETURNS TABLE a poté proveďte RETURN QUERY EXECUTE vrátit výsledky z dotazu.



  1. Pro tento scénář se v SQL spojí více tabulek

  2. Problémy s SQLite3 a Postgres/Heroku Ruby on Rails Query

  3. zobrazení dat z databáze do html tabulky

  4. Jak mohu zobrazit plán provádění SQL v Oracle?