PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Função PLpgSQL não retornando títulos correspondentes


Deixando de lado o seu problema de cotação imediata (foi abordado corretamente por Jeff), a função pode ser muito mais simples e rápida assim:
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$;

Pontos principais:

A parte:dificilmente faz sentido filtrar em uma visão que já seleciona 'Fight Club' como sua única linha. Para uma pesquisa significativa, você não usaria essas visualizações...