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

Използване на параметър като име на колона във функцията Postgres

Не можете да използвате параметри като идентификатори (=име на колона), имате нужда от динамичен SQL за това. И това изисква PL/pgSQL:

CREATE OR REPLACE FUNCTION day_entries(p_id int, p_column text) 
  RETURNS BIGINT[] 
AS
$$
declare 
  l_result bigint[];
begin
  execute format('SELECT %I FROM days WHERE id = $1', p_column) 
     using p_id
     into l_result;
  return l_result;
end;     
$$
LANGUAGE plpgsql;

format() се справя правилно с идентификаторите при изграждане на динамичен SQL. $1 е заместващ параметър и стойността за него се предава с using p_id клауза на execute изявление.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсене в индекси на изрази

  2. Как групово да вмъкнете само нови редове в PostreSQL

  3. Извикването на съхранена функция или процедура няма да вмъкне и да запази промените

  4. Опреснете материализирания изглед автоматично с помощта на правило или уведомете

  5. Разлика между език sql и език plpgsql във функциите на PostgreSQL