PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PLpgSQL-Funktion gibt keine übereinstimmenden Titel zurück

Abgesehen von Ihrem unmittelbaren Zitierproblem (wurde von Jeff richtig angesprochen), kann die Funktion so viel einfacher und schneller sein:

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$;

Wichtige Punkte:

Abgesehen davon:Es macht kaum Sinn, nach einer Ansicht zu filtern, die bereits "Fight Club" als einzige Zeile auswählt. Für eine sinnvolle Suche würden Sie diese Ansichten nicht verwenden ...