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

Funkcja PLpgSQL nie zwraca pasujących tytułów

Pomijając Twój bezpośredni problem z cytowaniem (został odpowiednio rozwiązany przez Jeffa), funkcja może być znacznie prostsza i szybsza w następujący sposób:

CREATE or REPLACE FUNCTION q11(partial_title text) 
  RETURNS SETOF text
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY
   SELECT m.title || ' has ' || m.ncrew || ' cast and crew'
   FROM   movie_makers m
   WHERE  m.title ~* $1;
   
   IF NOT FOUND THEN
      RETURN NEXT 'No matching titles';
   END IF;
END
$func$;

Główne punkty:

Pomijając:nie ma sensu filtrować widoku, w którym jako jedyny wiersz jest już wybrany „Fight Club”. Dla sensownego wyszukiwania nie używałbyś tych widoków ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spłaszczanie kolumny Postgres zagnieżdżonej JSONB

  2. Wyodrębnij datę (rrrr/mm/dd) ze znacznika czasu w PostgreSQL

  3. foreach %dopar% + RPostgreSQL

  4. Jak odjąć/dodać minuty od znacznika czasu w postgreSQL

  5. Zaktualizuj wiele kolumn, które zaczynają się od określonego ciągu