×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Thanks Brian for pointing this out to me.
So changed the rpgsrc

exec sql
declare c1 cursor for
select *
from table(SYSTOOLS.SPLIT('12|12345', '|')) ;
exec sql
open c1;
dou SQLCOD<>0;
exec sql
fetch C1 into :value1u, :value2u;
value(x).value1 = value1u;
value(x).value2 = value2u;
x += 1;
enddo;
exec sql
close C1;
dump;
*inlr = *on;

Got an array with element seq# and value.

Thanks again.

Best regards,
Danny

-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Brian Parkins
Sent: woensdag 22 mei 2019 13:59
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: using SYSTOOLS.SPLIT

Not sure what you're asking, Danny. All of your three examples are working as best they can.

If I understand correctly, SYSTOOLS.SPLIT returns two result columns:

Column Name Data Type Description
ORDINAL INTEGER The relative position of this element in the input string. The first row has a value of 1.
ELEMENT CLOB(2G) The value of the element.

Note the second column is a CLOB. I guess STRSQL cannot cope - hence *POINTER.

The ACS Run SQL Statements facility is more sophisticated works OK, (though this doesn't show in your cut/paste) It is able to cope with the CLOB return column. Note you have two rows being returned.

The SQLRPGLE example half-works - though I would suggest you define the second return column differently. You have the first row returned - but not the second. Your program does not accommodate multiple rows and you'll find a corresponding error message, SQL0811 (which you're not trapping - so the program continues to the end). Perhaps you should code for a file cursor?

HTH,
Brian.

On 22/05/2019 12:05, Danny Rodius wrote:
Hi,

Installed the latest TR6 and started to test some of the new stuff.



When running the STRSQL with a command like



select * from table(SYSTOOLS.SPLIT('12|12345','|'))

I got a list:

ORDIN00001 ELEMENT

1 *POINTER

2 *POINTER



Running the same sql statement in ACS- RunSQL scripts I got





Now trying this in sqlrpgle



**free

ctl-opt debug(*yes);

dcl-ds values;

value1 int(10);

value2 int(10);

end-ds;

exec sql

select *

into :values

from table(SYSTOOLS.SPLIT('12|12345', '|')) ;

dump;

*inlr = *on;



Now the dump got me the follow:



VALUES DS


VALUE1 INT(10) 1 '00000001'X


VALUE2 INT(10) 12 '0000000C'X




Anyone an idea?



Best regards,

Danny



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 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.