Re: What's wrong with this function

Поиск
Список
Период
Сортировка
От mark proctor
Тема Re: What's wrong with this function
Дата
Msg-id 01020921030306.05071@localhost.localdomain
обсуждение исходный текст
Ответ на Re: What's wrong with this function  (Najm Hashmi <najm@mondo-live.com>)
Список pgsql-sql
the select query returns the first row to rec. You can then access its values with:
rec.field_name
at END LOOP it jumps back to FOR checks to see if there any more rows and if so moves to the next row and repeats the
loop.
 
It also looks like your missing a LOOP keyword at the end of the FOR line.
Here is an example that works.

CREATE FUNCTION get_children (integer) RETURNS integer AS
'   DECLARE       pnode_parent ALIAS FOR $1;       rec RECORD;   BEGIN       FOR rec IN SELECT * FROM
tree_adjacency_matrixWHERE node_parent = pnode_parent LOOP           INSERT INTO test (node1, node2)
VALUES(stm.node_child,.rec.node_parent);       END LOOP;       RETURN 0;   END;
 
'LANGUAGE 'plpgsql'

Mark

On Saturday 10 February 2001 20:23, Najm Hashmi wrote:
> Jie Liang wrote:
> > I just know you can use implict cursor inside the plpgsql
> > e.g
> > declare
>
> result text;
> tcount int4;
>
> > rec record;
> > begin
> > FOR rec IN select_clause LOOP
> >      statements
> > END LOOP;
> > end;
>
> Thank you Jie for your help. I am bit confused about how it works. I want
> for each row , obtained by select statment,  get certain values and then do
> some calculations and out put that resulst  eg
>  for rec IN select title, dcount from songs where  artist='xyz'
>                  tcount:= tcount+rec.dcount;
> END LOOP;
>  return tcount;
> would this work ?
> Thanks again for your help.
> Regards, Najm


В списке pgsql-sql по дате отправления:

Предыдущее
От: mark proctor
Дата:
Сообщение: Recusrive Functions in 7.0.3
Следующее
От: "K. Ari Krupnikov"
Дата:
Сообщение: ORDER BY in SQL functions