Обсуждение: return multiple rows

Поиск
Список
Период
Сортировка

return multiple rows

От
Rakotomandimby Mihamina
Дата:
Hi all,
I have a FUNCTION queried like this:
   SELECT * FROM f_authorize_check_query2('%{SQL-User-Name}','%{User-Password}' [...];

Built this way:
   CREATE FUNCTION f_authorize_check_query2(...)  RETURNS radcheck
     AS $_$
    DECLARE
        [...]
        v_ret radcheck%ROWTYPE;
        [...]
           SELECT  INTO v_ret '111',username,'Cleartext-Password',pwd,':=' FROM [...]
    RETURN v_ret;
    END;
   $_$
   LANGUAGE plpgsql;

It returns only one row, like this:
     +----+----------+--------------------+----+-------+
     | id | UserName | Attribute          | op | Value |
     +----+----------+--------------------+----+-------+
     | 1  | bartek   | Cleartext-Password | := | 1234  |
     +----+----------+--------------------+----+-------+

I would like it to return
     +----+----------+--------------------+----+-------+
     | id | UserName | Attribute          | op | Value |
     +----+----------+--------------------+----+-------+
     | 1  | bartek   | Cleartext-Password | := | 1234  |
     | 3  | bartek   | Simultaneous-Use   | := | 1     |
     +----+----------+--------------------+----+-------+

*But*, I would like to _hardcode_ the "Simultaneous-Use" row.
If I use a FUNCTION to build the "Cleartext-Password" row, it's because the data structure
could not have been feetched simply.

Is SELECTing INTO a second time OK?

--
       Architecte Informatique chez Blueline/Gulfsat:
    Administration Systeme, Recherche & Developpement
                                    +261 34 29 155 34

Re: return multiple rows

От
Rakotomandimby Mihamina
Дата:
09/11/2009 05:53 PM, Rakotomandimby Mihamina:
> Is SELECTing INTO a second time OK?

But I dont know how...
Any hint?

--
       Architecte Informatique chez Blueline/Gulfsat:
    Administration Systeme, Recherche & Developpement
                                    +261 34 29 155 34

Re: return multiple rows

От
Raymond O'Donnell
Дата:
On 11/09/2009 15:53, Rakotomandimby Mihamina wrote:
>
> It returns only one row, like this:
>     +----+----------+--------------------+----+-------+
>     | id | UserName | Attribute          | op | Value |
>     +----+----------+--------------------+----+-------+
>     | 1  | bartek   | Cleartext-Password | := | 1234  |
>     +----+----------+--------------------+----+-------+
>
> I would like it to return
>     +----+----------+--------------------+----+-------+
>     | id | UserName | Attribute          | op | Value |
>     +----+----------+--------------------+----+-------+
>     | 1  | bartek   | Cleartext-Password | := | 1234  |
>     | 3  | bartek   | Simultaneous-Use   | := | 1     |
>     +----+----------+--------------------+----+-------+

You need to declare the function as returning SETOF radcheck, and then
use the RETURN NEXT construct - see the pl/pgsql docs here:

http://www.postgresql.org/docs/8.4/static/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING

There's an example here of how you do this.

> *But*, I would like to _hardcode_ the "Simultaneous-Use" row.
> If I use a FUNCTION to build the "Cleartext-Password" row, it's because
> the data structure
> could not have been feetched simply.

I'm not sure what you're getting at here.

Ray.


------------------------------------------------------------------
Raymond O'Donnell, Director of Music, Galway Cathedral, Ireland
rod@iol.ie
Galway Cathedral Recitals: http://www.galwaycathedral.org/recitals
------------------------------------------------------------------