PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como faço referência a parâmetros nomeados em funções sql do Postgres?


REVISADO:conforme indicado nos comentários, esta resposta estava correta quando escrita no início de 2012, mas os parâmetros nomeados têm suporte desde a v9.2, lançada no final de 2012.

Os nomes dos parâmetros são meramente decorativos quando sua função está em linguagem SQL . Você pode usar os parâmetros por nome em procedimentos armazenados definidos como language plpgsql .

Conseqüentemente, você deve se referir à função args usando $X onde X é a posição ordinal da lista de argumentos da função (começando com 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;