|
Ok. now I understand your request a little bit more so you need to populate
an array data structure and return it as a result set? if that the case the
below example may help
1. Declare your array data structure for example like this
// Result Set Data Structure
// field definition should match field type of your database field on the
select
Dcl-Ds ResultsetDS Dim(32766) Qualified;
FIELD1Ds Char(5);
FIELD2DS Char(2);
Field3DS Char(50);
Field4DS Char(5);
Field5DS Zoned(5);
End-ds;
3. Declare a normal data structure to save your data before populating
array data structure
// field definition should match field type of your database field
on the select
Dcl-Ds QRYFIELD
FIELD1 Char(5);
FIELD2 Char(2);
FIELD3 Char(50);
FiIELD4 Char(5);
FIELD5 Zoned(5);
End-ds;
4. Declare the array data structure index
Dcl-s Recnum Zoned(5); // Record Num/Used as Index
2. Then you will need to read your data using a cursor and populate your
array data structure
// Declare your cursor
Exec Sql
Declare C0 Cursor For
Select Field1,FIELD2, FIELD3, FIELD4,FIELD5
From MyDatabase;
// Open the cursor
Exec Sql
Open C0;
// Fetch Records
Exec sql
Fetch C0 INTO :QRYFIELD;
// For each record read populate the array data structure
Dow Sqlcode = *Zeros;
// Populate array DS
RECNUM +=1;
ResultsetDS(Recnum).FIELD1Ds=Field1;
ResultsetDS(Recnum).FIELD2Ds=Field2;
ResultsetDS(Recnum).FIELD3Ds=Field3;
ResultsetDS(Recnum).FIELD4Ds=Field4;
ResultsetDS(Recnum).FIELD5Ds=Field5;
Clear QRYFIELD;
// Fetch Next Record
Exec sql
Fetch C0 INTO :QRYFIELD;
Enddo;
// Close the cursor
Exec Sql Close C0;
// Return the array data structure as result set
// this part is very important.
Exec Sql
Set Result Sets Array :ResultsetDS For: Recnum Rows;
Note: This is your external rpg procedure I hope you understand that you
should create an sql
store procedure to call the external rpg procedure. I hope this
help you and be aware that
this can be done creating a pure sql store procedure as Charles
said.
On Thu, Jul 6, 2017 at 9:25 AM, Charles Wilt <charles.wilt@xxxxxxxxx> wrote:
You're doing it wrong...
You shouldn't be reading with SQL into a DS that then gets returned as a
result set.
All you need to do is declare and open a cursor
exec SQL
declare C1 cursor for
Select fielda, fieldb, fieldc
From myTable;
exec SQL
open C1;
return;
By virtue of being left open, the cursor will be returned as the result
set.
Personally, I prefer to build such stored procedures directly in SQL rather
than RPG.
Charles
On Wed, Jul 5, 2017 at 6:09 PM, DFreinkel <dfreinkel@xxxxxxxxxxxxxxxxx>
wrote:
@Josedata
I am building a data structure which is being returned as a result set in
a stored procedure.
Darryl Freinkel
iPad
On Jul 5, 2017, at 5:30 PM, CRPence <crpbottle@xxxxxxxxx> wrote:result-set is known to be necessarily limited [e.g. 100x320], then the
On 05-Jul-2017 12:58 -0600, DFreinkel wrote:As others noted, FETCH multiple rows. But if the data for the
I am reading data from a file into a data structure.
T_data ds qualified dim(100)
Fielda like(fielda)
Fieldb like(fieldb)
Fieldc like(fieldc)
Select fielda, fieldb, fieldc into :T_data
From myTable;
Compilers tells me SL0312 T_data is not defined or usable.
What am I doing wrong or how would I do this?
I do not want to read 1 record at a time.
can be returned as one row, so in effect, the above SELECT INTO could beone
accomplished; the contiguous data is then /viewed/ by the program as
DIMensioned proportionally. A recursive query can easily enough
concatenate the originally expected-as multiple-row result-set as just
row.(RPG400-L)
--
Regards, Chuck
--
This is the RPG programming on the IBM i (AS/400 and iSeries)
mailing list--
To post a message email: RPG400-L@xxxxxxxxxxxxquestions.
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.
Please contact support@xxxxxxxxxxxx for any subscription related
Help support midrange.com by shopping at amazon.com with our affiliatelink: http://amzn.to/2dEadiD
--
This is the RPG programming on the IBM i (AS/400 and 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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
This is the RPG programming on the IBM i (AS/400 and 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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
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.