PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przekaż wiele wartości w jednym parametrze

VARIADIC

Jak podał @mu, VARIADIC jest twoim przyjacielem. Jeszcze jeden ważny szczegół:

Możesz też wywołaj funkcję za pomocą VARIADIC parametr bezpośrednio z typem tablicy. Dodaj słowo kluczowe VARIADIC w wywołaniu funkcji:

SELECT * FROM  f_test(VARIADIC '{1, 2, 3}'::int[]);

jest równoważne z:

SELECT * FROM  f_test(1, 2, 3);

Inne porady

W Postgresie 9.1 lub nowszym right() z negatywem długość jest szybsza i prostsza przy wycinaniu wiodących znaków z ciągu:

right(j.status, -2)

jest równoważne z:

substring(j.status, 3, char_length(jobs.status))

Masz j."DeleteFlag" jak również j.DeleteFlag (bez podwójnych cudzysłowów) w zapytaniu. To prawdopodobnie nieprawda. Zobacz:

  • Błąd PostgreSQL:relacja już istnieje

"DeleteFlag" = '0' wskazuje na inny problem. W przeciwieństwie do innych RDBMS, Postgres poprawnie obsługuje boolean typ danych. Jeśli flaga zawiera boolean dane (true / false / NULL ) użyj boolean rodzaj. Typ znaku, taki jak text byłoby niewłaściwe / nieefektywne.

Właściwe działanie

Nie potrzebujesz tutaj PL/pgSQL. możesz użyj prostszej funkcji SQL:

CREATE OR REPLACE FUNCTION f_test(VARIADIC int[])
  RETURNS TABLE (id int, reference int, job_title text, status text)
  LANGUAGE sql AS
$func$
   SELECT j.id, j.reference, j.job_title
        , ltrim(right(j.status, -2)) AS status
   FROM   company c
   JOIN   job     j USING (id)
   WHERE  c.active
   AND    NOT c.delete_flag
   AND    NOT j.delete_flag
   AND   (j.id = ANY($1) OR '{-1}'::int[] = $1)
   ORDER  BY j.job_title
$func$;

db<>graj tutaj
Stary sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest maksymalna liczba kolumn w zapytaniu wybierającym PostgreSQL?

  2. Szczegółowe informacje na temat dostawców usług w chmurze:PostgreSQL na platformie Google Cloud (GCP)

  3. Jak zmienić kodowanie kolekcji szablonów bazy danych

  4. Jak przeprowadzić audyt bazy danych PostgreSQL

  5. Jak wypróbować wiele opcji SELECT, aż wynik będzie dostępny?