Re: Recursive queries for network traversal
От | William Furnass |
---|---|
Тема | Re: Recursive queries for network traversal |
Дата | |
Msg-id | AANLkTikbiKV2oT3C1Sab1N8fTN_Wp4bde3URhxeK-ueh@mail.gmail.com обсуждение исходный текст |
Ответ на | Recursive queries for network traversal (William Furnass <will@thearete.co.uk>) |
Список | pgsql-novice |
Hi, Please note that 'roi_pipes' in the psuedocode in my original post should actually read 'my_pipes'. Will On 8 August 2010 21:16, William Furnass <will@thearete.co.uk> wrote: > Hi, > > I'm very new to PL/pgSQL and am having difficulty in mixing my > understanding of procedural languages and of set-based operations in > devising a recursive query for network traversal. The pseudocode for > what I wish to do looks like the following: > > my_pipes = Pipes[] > > func find_all_pipes_upstream(node n) > if is_inlet(nodename) > return Nil > else > for p in upstream_pipes: > if p in my_pipes: > return Nil > else > roi_pipes.append(p) > find_all_pipes_upstream(upstream_node(p)) > > I've already written the following functions in pure SQL > > upstream_pipes(node_name varchar) RETURNS SETOF "Pipes" > upstream_node(pipe_name varchar) RETURNS "Node" > is_inlet(node_name) RETURNS boolean > > but am struggling to figure out how to manage scoping and return types > when translating the above pseudocode to pgSQL. Has anyone any advise > as how best to go about this? > > Thanks in advance. > > Cheers, > > Will > > ---- > Will Furnass > MSc student (Environmental Management of Urban Land and Water) > University of Sheffield, UK >
В списке pgsql-novice по дате отправления: