On 01/01/2012 14:42, Alexander Farber wrote:
> Hello Ray and others,
>
> On Sat, Dec 31, 2011 at 10:26 AM, Raymond O'Donnell <rod@iol.ie> wrote:
>>> # select pref_move_week('DE16290', 'DE1');
>>> 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 "pref_move_week" line 3 at SQL statement
>>>
>>> # create or replace function pref_move_week(_from varchar,
>>> _to varchar) returns void as $BODY$
>>> begin
>>>
>>> select 1 from pref_users
>>> where id=_from and
>>> vip is not NULL and
>>> vip > current_timestamp + interval '1 week';
>>
>> As the error message says, if you don't need the result of the SELECT
>> then do PERFORM instead:
>>
>> perform 1 from pref_users...
>>
>
> I've tried that of course, but "perform 1 ..." fails with 8.4.9:
>
>
> # select 1 from pref_users
> where id='DE1' and
> vip is not NULL and
> vip > current_timestamp + interval '1 week';
> ?column?
> ----------
> 1
> (1 row)
>
> # perform 1 from pref_users
> where id='DE1' and
> vip is not NULL and
> vip > current_timestamp + interval '1 week';
> ERROR: syntax error at or near "perform"
> LINE 1: perform 1 from pref_users
Is this in a pl/pgsql function, or a straight SQL query? PERFORM in this
form is a pl/pgsql construct; you'll get a syntax error if you try it at
the psql command line.
> And also - does PERFORM works with FOUND?
Not sure what you mean - can you elaborate?
Ray.
--
Raymond O'Donnell :: Galway :: Ireland
rod@iol.ie