PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Таблица като аргумент на функция на PostgreSQL

Не можете да предавате таблица като параметър, а само името на таблицата:

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;

Когато предавате име на таблица, трябва да изпълните динамична команда. Можете да направите това само във функция plpgsql. Използването на format() функция с %I модификаторът предпазва от SQL инжектиране. Редовете се връщат с помощта на RETURN NEXT QUERY фраза, отново с динамична команда.

Имайте предвид, че тази логикаи двете вмъква набор от записи в таблица test.out_table и след това връща същия набор от записи. Не съм сигурен дали това наистина искате.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. docker postgres pgadmin локална връзка

  2. Вместо LIKE и ~, защо само SIMILAR TO работи, когато правите съвпадение на регулярни изрази с алтернативи

  3. Как мога да стартирам PostgreSQL на Windows?

  4. PostgreSQL 9.3:Динамична въртяща се таблица

  5. Нормализиране на Unicode в PostgreSQL 13