Re: Row count after SELECT INTO?

From: Christoph Haller <ch(at)rodos(dot)fzk(dot)de>
To: fduch(at)antar(dot)bryansk(dot)ru (Alexander M(dot) Pravking)
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Row count after SELECT INTO?
Date: 2004-04-15 16:58:48
Message-ID: 200404151458.QAA03227@rodos
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

>
> Dear SQL and plPgSQL gurus, I seek for your wisdom.
>
> I have a variable assignment via SELECT INTO in my function, and I want
> to separate 3 cases:
> 1) no rows found;
> 2) one row found;
> 3) many rows found (ambiguous select).
>
> The first case is simple, I use FOUND variable for it.
> But how about the third? I tried to GET DIAGNOSTICS nrows = ROW_COUNT,
> bit it seems to get only value of 0 or 1. Is this how it supposed to be
> when SELECTing INTO a single variable?
>
> The only way I see now is a FOR ... IN SELECT loop, and I woner if
> there is a simpler solution. Could you please help me?
>
>
> --
> Fduch M. Pravking
>
I think ROW_COUNT values of 0/1 when SELECTing INTO a single variable are correct.
Because you cannot see more than one row anyway.
If you simply want to know about the number of result rows and don't care about
the data, you may change your SELECT ... into a SELECT COUNT(...
and separate your 3 cases from there.
Otherwise you'll have to go to a FOR ... IN SELECT loop.

Regards, Christoph

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Christoph Haller 2004-04-15 17:07:49 Re: Grant permission to all objects of user A to user B
Previous Message Joe Conway 2004-04-15 16:10:07 Re: function returning array