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

Come faccio a fare riferimento a parametri denominati nelle funzioni sql di Postgres?

REVISTO:come sottolineato nei commenti, questa risposta era accurata quando è stata scritta all'inizio del 2012, ma i parametri denominati sono stati supportati dalla versione 9.2, rilasciata alla fine del 2012.

I nomi dei parametri sono solo decorazioni quando la tua funzione è in linguaggio SQL . È possibile utilizzare i parametri per nome nelle procedure memorizzate definite come language plpgsql .

Di conseguenza, devi fare riferimento alla funzione args usando $X dove X è la posizione ordinale dell'elenco degli argomenti della funzione (che inizia con 1).

CREATE OR REPLACE FUNCTION fn_name (
  n VARCHAR(32) = NULL,
  OUT name varchar(32),
  OUT description varchar(64) )
RETURNS setof record
AS 
$$
    SELECT u.name
        , u.description
    FROM table_a u
    WHERE u.name = COALESCE($1, u.name);
$$
LANGUAGE sql;