sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af parameter som kolonnenavn i Postgres-funktionen

Du kan ikke bruge parametre som identifikatorer (=kolonnenavn), du skal bruge dynamisk SQL til det. Og 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() håndterer korrekt identifikatorer, når du bygger dynamisk SQL. $1 er en parameterpladsholder, og værdien for den sendes med using p_id klausul af execute erklæring.




  1. Min MySQL-database er løbet tør for diskplads

  2. Kunsten at isolere afhængigheder og data i databaseenhedstestning

  3. Hvad er fordele og ulemper ved at udføre beregninger i sql vs. i din ansøgning

  4. Automatisering af PostgreSQL daglige opgaver ved hjælp af Jenkins