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

Tabela jako argument funkcji PostgreSQL

Nie możesz przekazać tabeli jako parametru, tylko nazwę tabeli:

CREATE FUNCTION test.fcttest(tbl text) RETURNS SETOF test.out_table AS $$
BEGIN
  EXECUTE format('INSERT INTO test.out_table '
                   'SELECT id, another_field FROM %I', tbl);
  RETURN QUERY EXECUTE format('SELECT id, another_field FROM %I', tbl);
END;
$$ LANGUAGE plpgsql;

Przekazując nazwę tabeli, musisz wykonać polecenie dynamiczne. Możesz to zrobić tylko w funkcji plpgsql. Użycie format() funkcja z %I modyfikator chroni przed wstrzyknięciem SQL. Wiersze są zwracane przy użyciu RETURN NEXT QUERY frazę, ponownie za pomocą polecenia dynamicznego.

Zwróć uwagę, że ta logika obie wstawia zestaw rekordów do tabeli test.out_table a następnie zwraca ten sam zestaw rekordów. Nie jestem pewien, czy tego naprawdę chcesz.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Akcent PostgreSQL + wyszukiwanie bez uwzględniania wielkości liter

  2. Klauzula SQL Between z kolumnami stringów

  3. Bufory (kółko) w PostGIS

  4. Jak w Redshift/Postgres zliczyć wiersze spełniające warunek?

  5. Przywróć zrzut na zdalnym komputerze