Hi,
if he really wants to do this for any field/column in any file/table it is
more complicated and will not work with VALUES and even a simple cursor
cannot be used.
The desired columns/fields may have different data types with different
length, so you cannot fetch it somewhere into any work field. The work
fields it must be defined within RPG with the expected data type (even
though SQL can do some automatic conversions).
For such flexible SQL statements, a communications area must be used where
pointers for the values and descriptions (data type and length) are
returned.
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
-----Ursprüngliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] Im
Auftrag von Scott Klement
Gesendet: Friday, 13. November 2009 01:55
An: RPG programming on the IBM i / System i
Betreff: Re: Looking for BASIC example of using embedded SQL for retrieving
field value
I agree there's nothing wrong with using a cursor as needed, but... you
don't HAVE to use a cursor here. you could do this:
C eval W$SQLCmd = 'Values( Select '+ PARM5
C + ' from '+ PARM1
C + ' Where '+ PARM3 +'=?'
C + ') into ?';
C/Exec SQL Prepare MYSTMT from :W$SQLCmd
C/End-Exec
C/Exec SQL Execute MYSTMT Using :PARM4, :WRKFLD
C/End-Exec
Personally, trying to code this in fixed-format RPG causes my stomach to
churn :) But it should work without needing a cursor...
The danger of an SQL injection attack might be rather high if the
PARMxxx variables don't come from a trusted source, and you haven't
sanitized them.
rob@xxxxxxxxx wrote:
Just to repeat, you should check SQLSTT after every exec sql statement.
See my sample earlier.
Also, since you cannot do a 'select into' on a prepared statement you will
have to use a cursor.
As an Amazon Associate we earn from qualifying purchases.