sql >> Databasteknik >  >> RDS >> PostgreSQL

Skickar flera värden i en enda parameter

Din funktion skulle inte skapas. RETURN efter end är syntaktisk nonsens.

Hur som helst, en funktion med en VARIADIC parametern gör exakt vad du ber om:

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;

Ring (efter önskemål):

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

Med en enkel SQL-funktion krävs inte plpgsql för det enkla exemplet. Men VARIADIC fungerar också för plpgsql-funktioner.

Använda RETURNS SETOF integer eftersom detta uppenbarligen kan returnera flera rader.

Detaljer:

  • Skicka flera värden i en enda parameter
  • Returnera rader som matchar element i inmatningsmatrisen i plpgsql-funktionen
  • VARIADIC-parametern måste vara den sista indataparametern
  • Returnera rader som matchar element i inmatningsmatrisen i plpgsql-funktionen

SQL Fiddle demo med ytterligare parametrar.




  1. Hur man gör en INSERT Pass-Through Query i SQL Server

  2. Hur uppstår databaskorruption?

  3. Flera kolumn främmande nyckel i MySQL?

  4. Hur skriver man en fråga som gör något som liknar MySQL:s GROUP_CONCAT i Oracle?