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

Używanie parametru jako nazwy kolumny w funkcji Postgres

Nie możesz używać parametrów jako identyfikatorów (=nazwa kolumny), potrzebujesz do tego dynamicznego SQL. A to wymaga 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() poprawnie radzi sobie z identyfikatorami podczas budowania dynamicznego SQL. $1 to symbol zastępczy parametru, a jego wartość jest przekazywana z using p_id klauzula execute oświadczenie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacze PostgreSQL i podstawy funkcji przechowywanych

  2. Czy nazwy funkcji w PostgreSQL są niewrażliwe na wielkość liter?

  3. Odpowiednik DATEADD w PostgreSQL

  4. PostgreSQL:Usuń bazę danych PostgreSQL za pomocą wiersza poleceń

  5. Ograniczenie Postgresa dla unikalnego zakresu dat