Обсуждение: return multiple rows
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
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
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 ------------------------------------------------------------------