sql >> Database >  >> RDS >> PostgreSQL

Geef een schemanaam en tabelnaam dynamisch door in FROM in een selectiequery in Postgres

U hebt die lokale variabelen niet nodig voor schema en tabel. Gebruik de indelingsoptie om de query's te construeren en EXECUTE om het dynamisch uit te voeren

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; 

Als u het resultaat van een dynamische zoekopdracht wilt retourneren, kunt u

. gebruiken

RETURNS TABLE optie en doe dan RETURN QUERY EXECUTE om resultaten van de zoekopdracht te retourneren.



  1. de kolomnamen van de Oracle-tabel weergeven

  2. Oracle rownum-gedrag met mod-functie

  3. Hoe u UTC Datetime kunt krijgen van UNIX_TIMESTAMP() in MySQL

  4. Fix Msg 529 "Expliciete conversie van gegevenstype int naar xml is niet toegestaan" in SQL Server