PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie verweise ich auf benannte Parameter in Postgres-SQL-Funktionen?

REVISED:Wie in den Kommentaren erwähnt, war diese Antwort korrekt, als sie Anfang 2012 geschrieben wurde, aber benannte Parameter werden seit Version 9.2 unterstützt, die Ende 2012 veröffentlicht wurde.

Parameternamen sind lediglich Dekoration, wenn sich Ihre Funktion in Sprache SQL . Sie können die Parameter nach Namen in gespeicherten Prozeduren verwenden, die als language plpgsql definiert sind .

Folglich müssen Sie auf die Funktionsargumente mit $X verweisen, wobei X die Ordnungsposition der Argumentliste der Funktion ist (beginnend mit 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;