sql >> Database >  >> RDS >> PostgreSQL

Meerdere waarden in één parameter doorgeven

Uw functie zou niet worden gemaakt. RETURN na end is syntactische onzin.

Hoe dan ook, een functie met een VARIADIC parameter doet precies waar je om vraagt:

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;

Bel (naar wens):

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

Met behulp van een eenvoudige SQL-functie is plpgsql niet vereist voor het eenvoudige voorbeeld. Maar VARIADIC werkt ook voor plpgsql-functies.

Met behulp van RETURNS SETOF integer aangezien dit uiteraard meerdere rijen kan retourneren.

Details:

  • Meerdere waarden in één parameter doorgeven
  • Retourneer rijen die overeenkomen met elementen van invoerarray in plpgsql-functie
  • VARIADIC-parameter moet de laatste invoerparameter zijn
  • Retourneer rijen die overeenkomen met elementen van invoerarray in plpgsql-functie

SQL Fiddle demo met extra parameters.




  1. SQL-syntaxisterm voor 'WHERE (col1, col2) <(val1, val2)'

  2. OFFSET versus ROW_NUMBER()

  3. MS-Access-recordset en klassenmodule

  4. Hoe afhankelijkheden in een orakelpakket te vinden?