PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Предаване на множество стойности в един параметър

Вашата функция няма да бъде създадена. RETURN след end е синтактична глупост.

Така или иначе, функция с VARIADIC параметърът прави точно какво искате:

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;

Обадете се (по желание):

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

Използвайки проста SQL функция, plpgsql не се изисква за простия пример. Но VARIADIC работи и за plpgsql функции.

Използване на RETURNS SETOF integer тъй като това очевидно може да върне няколко реда.

Подробности:

  • Предаване на множество стойности в един параметър
  • Връщане на редове, съответстващи на елементи от входния масив във функцията plpgsql
  • Параметърът VARIADIC трябва да е последният входен параметър
  • Връщане на редове, съответстващи на елементи от входния масив във функцията plpgsql

SQL Fiddle демонстрация с допълнителни параметри.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да отстраня грешки в запаметените процедури на postgresql?

  2. Как да завъртите регистрационните файлове на PgBouncer в Linux/Windows?

  3. Каква е причината за грешката Повече не се разпознава... при стартиране на Postgresql 11 на машина с Windows?

  4. Получаване на резултати между две дати в PostgreSQL

  5. Защо само суперпотребител може да CREATE EXTENSION hstore, но не и на Heroku?