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

Übergeben mehrerer Werte in einem einzigen Parameter

Ihre Funktion würde nicht erstellt werden. RETURN nach end ist syntaktischer Unsinn.

So oder so, eine Funktion mit einem VARIADIC Parameter tut genau worum Sie bitten:

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;

Rufen Sie (nach Wunsch) an:

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

Bei Verwendung einer einfachen SQL-Funktion ist plpgsql für das einfache Beispiel nicht erforderlich. Aber VARIADIC funktioniert auch für plpgsql-Funktionen.

Verwendung von RETURNS SETOF integer da dies offensichtlich mehrere Zeilen zurückgeben kann.

Einzelheiten:

  • Übergeben Sie mehrere Werte in einem einzigen Parameter
  • Gib Zeilen zurück, die mit Elementen des Eingabearrays in der plpgsql-Funktion übereinstimmen
  • VARIADIC-Parameter muss der letzte Eingabeparameter sein
  • Gib Zeilen zurück, die mit Elementen des Eingabearrays in der plpgsql-Funktion übereinstimmen

SQL-Geige Demo mit zusätzlichen Parametern.