sql >> Database >  >> RDS >> PostgreSQL

PLpgSQL-functie retourneert geen overeenkomende titels

Afgezien van je directe citeerprobleem (is goed aangepakt door Jeff), kan de functie veel eenvoudiger en sneller zijn als volgt:

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

Belangrijkste punten:

Terzijde:het heeft nauwelijks zin om te filteren op een weergave die al 'Fight Club' als enige rij selecteert. Voor een zinvolle zoekopdracht zou u deze weergaven niet gebruiken ...



  1. DateTime-query op alleen jaar in SQL Server

  2. Microsoft DiskSpd gebruiken om uw opslagsubsysteem te testen

  3. PHP PDO Bit(1) geeft verkeerd datatype terug

  4. Hoe ResultSet te retourneren van opgeslagen procedure in Oracle?