return multiple rows

Started by Rakotomandimby Mihaminaover 16 years ago3 messagesgeneral
Jump to latest
#1Rakotomandimby Mihamina
mihamina@gulfsat.mg

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

#2Rakotomandimby Mihamina
mihamina@gulfsat.mg
In reply to: Rakotomandimby Mihamina (#1)
Re: return multiple rows

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

In reply to: Rakotomandimby Mihamina (#1)
Re: return multiple rows

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
------------------------------------------------------------------