PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przekaż nazwę schematu i nazwę tabeli dynamicznie w FROM w zapytaniu wybierającym w Postgres

Nie potrzebujesz tych zmiennych lokalnych dla schematu i tabeli. Użyj opcji formatu, aby skonstruować zapytania i EXECUTE uruchamiać go dynamicznie

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; 

Jeśli chcesz zwrócić wynik zapytania dynamicznego, możesz użyć

RETURNS TABLE a następnie wykonaj RETURN QUERY EXECUTE aby zwrócić wyniki zapytania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL znajduje wspólną kombinację par w tej samej kolumnie

  2. Kombinacje PostgreSQL bez powtórzeń

  3. Ile miejsca na dysku potrzeba do przechowywania wartości NULL przy użyciu postgresql DB?

  4. pg client.query() nie czeka na await

  5. Alias ​​odniesienia w klauzuli WHERE