|
LIm, Pass a level to the procedure and use that level to open another cursor, When returning to the previous level close the cursor. This means you have to declare different cursors. Regards, Carel Teijgeler *********** REPLY SEPARATOR *********** On 12-4-06 at 14:22 Lim Hock-Chai wrote: >I can't close the cursor, the parent thread still needs it. See below >for detail on what I'm doing: > >This is what I try to achieve: >Example: >1) MYFILE has 2 fields: CHILD and PARENT. >2) If the data looks like below >CHILD PARENT >AAA BBB >CCC AAA >DDD BBB >EEE JJJ >3) This procedure basically need to return all family member back to the >caller. If say the caller pass DDD, this procedure should return: >DDDBBBAAACCC > >Below is what I got (Not able to test it because when it recursive calls >the getFamilyMember, it gets the cursor already open error and the >return result become incorrect: > >D getFamilyMember... >D pr 90 varying >D piMember 3 value > >D MYFILE E DS >D family s 90 varying > > >C eval family = getFamilyMember('DDD') > >C eval *inlr = *on > ************************************************************* >P getFamilyMember... >P B export >D pi 90 varying >D piMember 3 value > >D prList s 90 varying static > >C if piMember = *blank >C return prList >C endif > >C eval prList = prList+piMember+';' > >C/exec sql >C+ declare c1 scroll cursor for >C+ select * >C+ from MYFILE >C+ where PARENT = :piMember or >C+ CHILD = :piMember >C/end-exec > >C/exec sql >C+ open C1 >C/end-exec > >C dou sqlCod <> 0 >C/exec sql >C+ fetch next >C+ from C1 >C+ into :child,:parent >C/end-exec >C if sqlCod <> 0 >C leave >C endif > >C if %scan(child :prList) = 0 >C callp getfamilyMember(child) >C endif > >C if child <> parent and >C %scan(parent :prList) = 0 >C callp getfamilyMember(parent) >C endif > >C enddo > >C/exec sql >C+ close C1 >C/end-exec > >C return prList > >P getFamilyMember... >P E > > > >-----Original Message----- >From: rpg400-l-bounces@xxxxxxxxxxxx >[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Holden Tommy >Sent: Wednesday, April 12, 2006 1:50 PM >To: RPG programming on the AS400 / iSeries >Subject: RE: Is SQL cursor open at the job level? > >OR.... > >Compile to CLOSQLCSR(*ENDMOD) > >Or... > >c/exec sql >C+ SET OPTION CLOSQLCSR=*ENDMOD >c/end-exec > > >Thanks, >Tommy Holden > > >-----Original Message----- >From: rpg400-l-bounces@xxxxxxxxxxxx >[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of >Michael_Schutte@xxxxxxxxxxxx >Sent: Wednesday, April 12, 2006 1:44 PM >To: RPG programming on the AS400 / iSeries >Subject: Re: Is SQL cursor open at the job level? > >Is this a SQL Procedure or RPG Procedure using SQL? > >If RPG, add the HSPEC > >H ActGrp(*NEW)... I believe? > >Michael Schutte >Work 614-492-7419 >email michael_schutte@xxxxxxxxxxxx > > > > > "Lim Hock-Chai" > > <Lim.Hock-Chai@us > > amobility.com> >To > Sent by: "RPG programming on the AS400 / > > rpg400-l-bounces@ iSeries" <rpg400-l@xxxxxxxxxxxx> > > midrange.com >cc > > > >Subject > 04/12/2006 02:40 Is SQL cursor open at the job > > PM level? > > > > > > Please respond to > > RPG programming > > on the AS400 / > > iSeries > > <rpg400-l@midrang > > e.com> > > > > > > > > > >I need to do recursive call on a procedure that declare and open sql >cursor. I'm getting a cursor already open error when recursively >calling the procedure. Is there a way a go around that? > > >-- >This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing >list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, >unsubscribe, or change list options, >visit: http://lists.midrange.com/mailman/listinfo/rpg400-l >or email: RPG400-L-request@xxxxxxxxxxxx >Before posting, please take a moment to review the archives at >http://archive.midrange.com/rpg400-l. > > > >-- >This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing >list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, >unsubscribe, or change list options, >visit: http://lists.midrange.com/mailman/listinfo/rpg400-l >or email: RPG400-L-request@xxxxxxxxxxxx >Before posting, please take a moment to review the archives at >http://archive.midrange.com/rpg400-l. > > >-- >This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing >list >To post a message email: RPG400-L@xxxxxxxxxxxx >To subscribe, unsubscribe, or change list options, >visit: http://lists.midrange.com/mailman/listinfo/rpg400-l >or email: RPG400-L-request@xxxxxxxxxxxx >Before posting, please take a moment to review the archives >at http://archive.midrange.com/rpg400-l. > > >-- >This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list >To post a message email: RPG400-L@xxxxxxxxxxxx >To subscribe, unsubscribe, or change list options, >visit: http://lists.midrange.com/mailman/listinfo/rpg400-l >or email: RPG400-L-request@xxxxxxxxxxxx >Before posting, please take a moment to review the archives >at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.