PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

La fonction PLpgSQL ne renvoie pas les titres correspondants

Mis à part votre problème de citation immédiat (a été correctement traité par Jeff), la fonction peut être beaucoup plus simple et plus rapide comme ceci :

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

Principaux points :

À part :cela n'a guère de sens de filtrer sur une vue qui sélectionne déjà "Fight Club" comme seule ligne. Pour une recherche significative, vous n'utiliseriez pas ces vues...