Thread: query has no destination for result data

query has no destination for result data

From
Patta
Date:
Hi,

I'm a beginner in postgresql. I get the below error. Could you help me
to fix this one?

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 "insertcommjunction1" line 7 at SQL statement

The function is as follows.
CREATE OR REPLACE FUNCTION test()
  RETURNS text AS
$BODY$
DECLARE
     query_rec record;
     idxfti tsvector;
     c1 cursor for select * from <table>;
Begin
open c1;
Loop
fetch c1 into query_rec;
begin
raise notice 'Record %', query_rec.field1;
end;
End loop;
Return 'ok';
end;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

Re: query has no destination for result data

From
Alan Hodgson
Date:
On Friday 23 April 2010, Patta <pmuthuz@gmail.com> wrote:
> Hi,
>
> I'm a beginner in postgresql. I get the below error. Could you help me
> to fix this one?
>
> 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 "insertcommjunction1" line 7 at SQL
> statement
>
> The function is as follows.
> CREATE OR REPLACE FUNCTION test()
>   RETURNS text AS
> $BODY$
> DECLARE
>      query_rec record;
>      idxfti tsvector;
>      c1 cursor for select * from <table>;
> Begin
> open c1;
> Loop
> fetch c1 into query_rec;
> begin
> raise notice 'Record %', query_rec.field1;
> end;
> End loop;
> Return 'ok';
> end;
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE;

Just do something like:

FOR  query_rec IN SELECT * FROM <table>
  LOOP
     ... actions
END LOOP;

pl/pgsql will use a cursor internally without you worrying about it.


--
"No animals were harmed in the recording of this episode. We tried but that
damn monkey was just too fast."

Re: query has no destination for result data

From
Tom Lane
Date:
Patta <pmuthuz@gmail.com> writes:
> I'm a beginner in postgresql. I get the below error. Could you help me
> to fix this one?

> 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 "insertcommjunction1" line 7 at SQL statement

> The function is as follows.
> CREATE OR REPLACE FUNCTION test()

Um, that's not the function being complained of ...

            regards, tom lane