-
Hallo, hiermit poste ich nun noch mein Lösung, der code funktioniert nun so.
Im weiteren hatte ich noch das Problem mit der Fehlermeldung "Anzeigervariable erforderlich SQLSTATE 22002"
Man beachte die Lösung für diese Fehlermeldung,
die Variable "myind", die die NULL STATI Für die Felder zurückgibt
(Die sonst als ersten Datensatz angefügt werden - wie clever gelöst, IBM! [ha-ha])
Ich hoffe das der Code jedem Hilft, der später nach der Lösung für solcherlei Probleme Googelt.
Ein speziellen Dank nochmal an Fuerchau, der so nett war und mir geholfen hat .
Code:
**free
ctl-opt option(*nodebugio:*srcstmt:*nounref) alwnull(*inputonly) main(main);
dcl-proc main;
dcl-ds sysUserTable QUALIFIED;
USER_NAME char(10);
INITPGM char(10);
INITPGMLIB char(10);
END-DS;
dcl-s myind int(5) dim(256);
dcl-s InsertErrSQLtext char(999);
dcl-s insertState char(6);
dcl-s testStr char(52);
dcl-s statSQL int(10);
dcl-s CNT int(10);
exec sql DECLARE CUILoop SCROLL CURSOR FOR
SELECT
USER_NAME,
INITPGM ,
INITPGMLIB
FROM QSYS2.USER_INFO A
;
exec sql OPEN CUILoop;
exec sql FETCH FIRST FROM CUILoop INTO :sysUserTable :myind;
// SQL DEBUG START
// Falls hier kommt: Anzeigervariable erforderlich 22002 .. dann brauche ich hinter dem sql
// noch eine weitere Variable, so
// dcl-s myind int(5) dim(256);
// exec sql FETCH FROM CUILoop INTO :sysUserTable :myind;
Exec SQL GET DIAGNOSTICS Condition 1 :InsertErrSQLtext = MESSAGE_TEXT;
Exec SQL Get Diagnostics Condition 1 :insertState = RETURNED_SQLSTATE;
Monitor;
statSQL = %dec(SQLSTATE:7:2); // Vorsicht! es können codes mit buchstaben vorkommen.
On-Error *all ;
Endmon;
testStr = %SUBST(InsertErrSQLtext:1:52);
dsply testStr;
testStr = %SUBST(InsertErrSQLtext:53:105);
dsply testStr;
testStr = %trim('SQLSTATE: '+insertState);
dsply testStr;
// SQL DEBUG END
dow (statSQL < 2000) or (CNT > 3);
dsply %trim(sysUserTable.USER_NAME+'-'+sysUserTable.INITPGM+'/'+sysUserTable.INITPGMLIB);
exec sql FETCH NEXT FROM CUILoop INTO :sysUserTable :myind;
Monitor;
statSQL = %dec(SQLSTATE:7:2); // Vorsicht! es können codes mit buchstaben vorkommen.
On-Error *all ;
Endmon;
dsply %trim('SQLSTATE '+SQLSTATE);
CNT += 1;
enddo;
exec sql close CUILoop;
end-proc;
Hinweis zur Lösung:
In der Lösung hier benutze ich keinen Join mehr, es ist eine einfache User_Name Abfrage, allerdings funktioniert auch die join Abfrage aus der ursprünglichen anfrage s.o.)
Similar Threads
-
By Bau in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 26-01-17, 12:50
-
By Hrs28 in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 30-03-15, 00:22
-
By KM in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 07-02-14, 11:47
-
By DEVJO in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 05-03-03, 07:18
-
By KB in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 18-06-01, 07:35
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks