sql >> Database teknologi >  >> RDS >> PostgreSQL

Send et skemanavn og tabelnavn dynamisk i FROM i en udvalgt forespørgsel i Postgres

Du behøver ikke disse lokale variabler til skema og tabel. Brug formatindstillingen til at konstruere forespørgslerne og EXECUTE for at køre det dynamisk

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; 

Hvis du vil returnere resultatet af en dynamisk forespørgsel, kan du bruge

RETURNS TABLE valgmulighed og derefter RETURN QUERY EXECUTE for at returnere resultater fra forespørgslen.



  1. Oracle opsætter et globaliseringsstøttemiljø

  2. Databasedesign 101

  3. Forskelle mellem DATA INFILE og LOAD DATA LOCAL INFILE

  4. sammenligne datasæt og returnere det bedste match