|
1) Declare multiple cursors like C1cursor, C2cursor, etc. 2) Evaluate using PREPARE and EXECUTE to build an 'on-the-fly' SQL statement 3) Structure your SQL statement for maximum flexibility. In your example let's pretend you had the following: C SELECT C WHEN CHOICE = 'A' C/EXEC SQL C+ Select COL1, COL2, COL3 C+ from TABLEA C+ where COL4=:X C/END-EXEC C WHEN CHOICE='B' C/EXEC SQL C+ Select COL1, COL2, COL3 C+ from TABLEA C+ where COL4 between :Y and :Z C/END-EXEC C WHEN CHOICE='C' C/EXEC SQL C+ Select COL1, COL2, COL3 C+ from TABLEA C/END-EXEC C ENDSL Restructure this into: C SELECT C WHEN CHOICE = 'A' C Eval Y=X C Eval Z=X C WHEN CHOICE='B' C WHEN CHOICE='C' C Eval Y=*loval C Eval Z=*hival C ENDSL C/EXEC SQL C+ Select COL1, COL2, COL3 C+ from TABLEA C+ where COL4 between :Y and :Z C/END-EXEC In this case you would always use the BETWEEN instead of choosing. This same technique has been used by SQL and OPNQRYF. Rob Berendt ================== Remember the Cole! "Mike Naughton" <mnaughton@juddwi To: RPG400-L@midrange.com re.com> cc: Sent by: Subject: Embedded SQL owner-rpg400-l@mi drange.com 12/11/00 12:52 PM Please respond to RPG400-L I have been experimenting with embedded SQL, using Barbara's example program as a guide (thanks, Barbara!). In general, it works great, but I'm running into one problem that I can't seem to get around. If I only have one "declare cursor" statement, I'm fine, but it I try to have more than one e.g. C SELECT C WHEN CHOICE = 'A' C/EXEC SQL C+ declare C1cursor for C+ <some stuff here> C/END-EXEC C WHEN CHOICE='B' C/EXEC SQL C+ declare C1cursor for C+ <other stuff here> C/END-EXEC C ENDSL I get a compile error "cursor C1 already defined" for the second statement (and all subsequent ones). I've tried IFs and SELECTs; I've tried putting it in the main flow or off in a subroutine -- nothing seems to work! Am I missing something? Thanks! Mike Naughton Senior Programmer/Analyst Judd Wire, Inc. 124 Turnpike Road Turners Falls, MA 01376 413-863-4357 x444 mnaughton@juddwire.com +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +--- +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
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.