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

Passaggio di più valori in un singolo parametro

La tua funzione non verrebbe creata. RETURN dopo end è una sciocchezza sintattica.

In ogni caso, una funzione con un VARIADIC parametro fa esattamente cosa chiedi:

CREATE OR REPLACE FUNCTION test_function(VARIADIC varchar[])
 RETURNS SETOF integer AS
$func$
SELECT column2
FROM   test_table
WHERE  column1 = ANY($1);
$func$  LANGUAGE sql;

Chiama (a piacere):

SELECT * FROM test_function('data1', 'data2', 'data3');

Utilizzando una semplice funzione SQL, plpgsql non è richiesto per il semplice esempio. Ma VARIADIC funziona anche per le funzioni plpgsql.

Usando RETURNS SETOF integer poiché questo può ovviamente restituire più righe.

Dettagli:

  • Passa più valori in un singolo parametro
  • Restituisce le righe corrispondenti agli elementi dell'array di input nella funzione plpgsql
  • Il parametro VARIADIC deve essere l'ultimo parametro di input
  • Restituisce le righe corrispondenti agli elementi dell'array di input nella funzione plpgsql

SQL Fiddle demo con parametri aggiuntivi.