sql >> Base de Datos >  >> RDS >> PostgreSQL

Función PLpgSQL que no devuelve títulos coincidentes

Dejando a un lado su problema inmediato de cotización (Jeff lo ha abordado correctamente), la función puede ser mucho más simple y rápida de esta manera:

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

Puntos principales:

Aparte:apenas tiene sentido filtrar en una vista que ya selecciona 'Fight Club' como su única fila. Para una búsqueda significativa, no usaría estas vistas...