sql >> Base de Datos >  >> RDS >> PostgreSQL

Pasar múltiples valores en un solo parámetro

Su función no se crearía. RETURN después de end es una tontería sintáctica.

De cualquier manera, una función con un VARIADIC el parámetro hace exactamente lo que pides:

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;

Llame (como desee):

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

Usando una función SQL simple, no se requiere plpgsql para el ejemplo simple. Pero VARIADIC también funciona para funciones plpgsql.

Usando RETURNS SETOF integer ya que esto obviamente puede devolver múltiples filas.

Detalles:

  • Pasar múltiples valores en un solo parámetro
  • Devolver filas que coincidan con los elementos de la matriz de entrada en la función plpgsql
  • El parámetro VARIADIC debe ser el último parámetro de entrada
  • Devolver filas que coincidan con los elementos de la matriz de entrada en la función plpgsql

Violín SQL demostración con parámetros adicionales.