sql >> Databasteknik >  >> RDS >> PostgreSQL

Använder parameter som kolumnnamn i Postgres-funktionen

Du kan inte använda parametrar som identifierare (=kolumnnamn), du behöver dynamisk SQL för det. Och det kräver 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() hanterar identifierare korrekt när man bygger dynamisk SQL. $1 är en parameterplatshållare och värdet för den skickas med using p_id satsen i execute uttalande.




  1. MySQL PI() Funktion – Returnera värdet av π (pi)

  2. SQL Server - anslut med Windows-autentisering

  3. Villkorlig SUM på Oracle

  4. Hur exporterar man data med Oracle SQL Developer?