... viel zu kompliziert eigentlich ...
Meiner Meinung geht das am "einfachsten" mit dem SQL Descriptor.
Ich hab mir da mal ein Beispiel-PGM zusammen gebastelt. Leider gibts darüber nicht viel Dokus bei der IBM.
Aber so sollte es klappen:
Code:D vsql s 512 D vtype s 10 D vlength s 10 0 D vresult_ind s 10 0 D vCount S 10 0 D i S 10 0 /Free //---- Sql Optionen setzen ---- Exec Sql SET OPTION COMMIT=*NONE, CLOSQLCSR=*ENDMOD, ALWBLK=*ALLREAD, ALWCPYDTA=*YES, SRTSEQ=*HEX, DLYPRP=*YES; // SQL Cursor erstellen vSql = 'Select * From tab1'; Exec Sql Prepare S1 from :vsql; Exec Sql Declare c1 Cursor For s1; // Descriptor mit der max. Anzahl der Spalten initialisieren Exec Sql allocate descriptor 'mydesc' with max 2; EXEC SQL DESCRIBE S1 Using descriptor 'mydesc'; // Ersten Satz einlesen Exec Sql open c1; Exec Sql Fetch c1 into sql descriptor 'mydesc'; // Anzahl der Spalten abrufen EXEC SQL GET DESCRIPTOR 'mydesc' :vCount = COUNT; // Alle Spalten mit deren Werte einlesen For i=0 to vCount; // Attribute der Spalte einlesen Exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :vtype = TYPE, :vlength = LENGTH, :vresult_ind = INDICATOR; if vresult_ind >= 0; Select; When vtype = '1'; // Character exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :sp2 = DATA; When vtype = '4'; // Integer exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :sp1 = DATA; endsl; endif; endfor; Exec Sql close c1; *INLR = *ON; /End-Free
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



:
Mit Zitat antworten
Bookmarks