Issue with PERFORM - Mailing list pgsql-novice

From Yury Peskin
Subject Issue with PERFORM
Date
Msg-id web-4682210@cyclesoftware.com
Whole thread Raw
Responses Re: Issue with PERFORM  ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>)
List pgsql-novice
Hello,
Environment:

Postgresql: 9.1.5
OS: CentOS 64bit 6.3(final)

Problem:

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use
PERFORM instead.
CONTEXT:  PL/pgSQL function "nm_create_friend" line 3 at
SQL statement
SQL statement "SELECT NM_create_friend($1, friend_id)"
PL/pgSQL function "nm_create_friends" line 9 at PERFORM

and here's the actual function:
CREATE FUNCTION nm_create_friends(user_id uuid, friend_ids
text[]) RETURNS void
    LANGUAGE plpgsql
    AS $_$
DECLARE
        friend_id text;
BEGIN
        FOREACH  friend_id in array $2
        LOOP
                PERFORM NM_create_friend($1, friend_id);
  <--- this is the error line
        END LOOP;
END;
$_$;

Just in case here's the function that gets called:

CREATE FUNCTION nm_create_friend(user_id uuid, friend_id
text) RETURNS void
    LANGUAGE plpgsql
    AS $_$
BEGIN
SELECT f.friend_id
FROM
friends AS f
WHERE f.user_id = $1 AND f.friend_id = $2;
IF NOT FOUND THEN
INSERT INTO friends (user_id, friend_id) values($1,$2);
END IF;
END;
$_$;



For some reason, psql thinks that PERFORM
NM_create_friend($1, friend_id); function is using a
SELECT. Any ideas on how to fix this issue?
Yury Peskin


pgsql-novice by date:

Previous
From: Yury Peskin
Date:
Subject: issue with perform
Next
From: "Kevin Grittner"
Date:
Subject: Re: Issue with PERFORM