-
RUNSQLSTM - Problem
Hallo habe hier ein SQL welches als TXT in einer Source abgelegt ist:
PHP-Code:
insert into jrnanz/SOURCES1
SELECT 1 , 1 ,' A '|| WHFLDI||' '||
case when whfldd=0 then substr(digits(whfldb) , 3 , 3)
else ' '||digits(whfldd) end
||whfldt||
case when whfldp=0 then ' '
else substr(digits(WHFLDp) , 1 , 2) end
||' TEXT('||''''|| trim(left(WHFTXT , 28))||''''||')'
from jrnanz/fields
dieses wird dann aus einem CL mit dem Befehl RUNSQLSTM aufgerufen!
a) kann mir jemand sagen, was die "||" bedeuten und wie ich sie ersetzen kann/muß?
b) die Zeile mit TEXT('||.... ermittelt die Beschreibung (TEXT) des Feldes !!! -> wenn jetzt kein Text vorhanden ist, dann steht anschließend in der Source nur "TEXT('')". Wenn die Source mit CRTPFM umgewandelt wird, bekomme ich einen Fehler -> wie kann ich das umgehen
-
Zitat von muadeep
...kann mir jemand sagen, was die "||" bedeuten und wie ich sie ersetzen kann/muß?...
Hello,
das müsste ein *CAT sein.
Stichwort Ersatzoperator.
k.
-
Hab's mal abgändert dann bekomme ich beim Ausführen mit RUNSQLSTM folgenden Fehler:
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 FLGNR. Letzte Änderung
1 insert into jrnanz/SOURCES1
2 SELECT 1 , 1 ,' A ' *cat WHFLDI *cat ' ' *cat
3 case when whfldd=0 then substr(digits(whfldb) , 3 , 3)
4 else ' ' *cat digits(whfldd) end
5 *cat whfldt *cat
6 case when whfldp=0 then ' '
7 else substr(digits(WHFLDp) , 1 , 2) end
8 *cat ' TEXT('*cat '''' *cat trim(left(WHFTXT , 28)) *cat '''' *cat ')'
9 from jrnanz/fields
* * * * * E N D E D E R Q U E L L E * * * * *
SQL0104 30 2 Position 52 Token * ungültig. Gültige Token: , FROM INTO.
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Fehler der Wertigkeitsstufe 30 in Quelle gefunden.
-
ähmm...
nee nee, das geht wohl so nicht.
*CAT ist ja eigentlich nen CL-Operator.
Weil das so nicht geht, hat ja der Vorgänger eben || genommen.
Eventuell geht "concat" ??
Zum Thema RUNSQLSTM gibts hier im Forum reichlich Stoff!
k.
Sodele, habe noch mal etwas geblättert.
Statt || sollte concat gehen.
Aber warum lässt Du das nicht einfach so?
Dein Hauptptoblem scheint ja nur das leere "Text" zu sein?
Wie man das gebacken bekommt weiss ich nicht, da musst Du mal auf ne/n SQL-Profi warten...
k.
-
Hallo,
mit || kann es Probleme geben. In manchen Umgebungen müssen stattdessen zwei !! angegeben werden.
Solange es nur um SQL geht ist die sicherste Lösung ist, wie Kuempi sagt, concat statt der || zu verwenden. Das ist international und gibt keine Probleme.
Was Dein Problem mit dem Text angeht. Du darfst den Text nur ausgeben, wenn auch einer angegeben wurde, d.h. Du benötigst eine zusätzlich CASE-Anweisung:
Etwa so (nicht getestet, da ich z.Z. keinen Zugriff auf eine iSeries habe)
PHP-Code:
Concat Case When Length(Trim(Left(WHFTXT, 28) <> 0
Then ' TEXT(' concat
'''' concat trim(left(WHFTXT , 28)) concat ''''
concat ')'
End
Birgitta
-
ok, danke schön
jetzt wär da noch das Problem dass die Source so erstellt wird:
PHP-Code:
A MANDANT_ID 09B TEXT('')
und dass ich dann beim umwandeln mit CRTPF immer eine Fehlermeldung bekommen!
-
Hello again,
das leere Textfeld könnte man vermutlich mit
concat trim(left(WHFTXT , 27)) concat ' ' concat '''' concat ')' umgehen. Weiss gerade nicht, ob die Syntax korrekt ist, aber du hängst einfach grundsätzlich noch ne Leerstelle hinten ran, wenn Du verstehst was ich meine...
Und die genaue Fehlermeldung wäre interassant, falls es nicht geht.
In diesem Sinne...
k.
Noch ein kleiner Nachtrag:
Die Lösung von Birgitta würde ich bevorzugen so grundsätzlich.
Ob man ein *Blank überhaupt mit concat ranbekommt, weiss ich nicht, im Zweifelsfalle eben irgendein doofes Zeichen nehmen (Punkt?)...
Und noch ne Frage: was wird das eigentlich?
Sieht mir nach Journal und DSPFFD usw. aus....
So eine Art Ablage in ne File was an Infos aus dem Journal kommt?
-
Hier mal die Fehlermeldung mit dem Eingebauten Statment
(hoffe es ist so richtig!)
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 FLGNR. Letzte Änderung
1 insert into jrnanz/SOURCES1
2 SELECT 1 , 1 ,' A '|| WHFLDI||' '||
3 case when whfldd=0 then substr(digits(whfldb) , 3 , 3)
4 else ' '||digits(whfldd) end
5 ||whfldt||
6 case when whfldp=0 then ' '
7 else substr(digits(WHFLDp) , 1 , 2) end
8 ||' TEXT('||''''|| trim(left(WHFTXT , 28))||''''||')'
9 Concat Case When Length(Trim(Left(WHFTXT, 28) <> 0
10 Then ' TEXT(' concat
11 '''' concat trim(left(WHFTXT , 28)) concat ''''
12 concat ')' end
13 from jrnanz/fields
* * * * * E N D E D E R Q U E L L E * * * * *
SQL0104 30 9 Position 51 Token <> ungültig. Gültige Token: ).
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Fehler der Wertigkeitsstufe 30 in Quelle gefunden.
JobLog:
Befehl RUNSQLSTM fehlgeschlagen.
Fehler bei Ausführung des Verarbeitungsbefehls; Einzelheiten enthält das Jobprotokoll.
Sieht mir nach Journal und DSPFFD usw. aus....
-> stimmt genau
(es handelt sich um ext. Pgm(e). welche in einer bestimmten Bibl. arbeiten, dort ist ein Journal auf an, und ich wollte mal genauern sehen, was da denn so alles (je Datei) gemacht wird)
-
Also mit der "Fehlermeldung" kann ich nix anfangen. Ist mehr nen Fall für Brigitta oder so...
Hier mal ein "manueller" Ablauf um ein Journal auszuwerten...
DSPJRN JRN(Journalname)
FROMTIME(220805 150000)
TOTIME(220805 160000)
OUTPUT(*OUTFILE)
OUTFILE(QTEMP/TYPE1)
ENTDTALEN(*CALC)
Dann Datei erstellen JRNTYP1 in QTEMP
*
A R QJORDJE
*
A JOENTL 5P 0 COLHDG('EINTRAGSLÄNGE')
A JOSEQN 10P 0 COLHDG('FOLGENUMMER')
A JOCODE 1A COLHDG('JOURNALCODE')
A JOENTT 2A COLHDG('EINTRAGSART')
A JODATE 6A COLHDG('DATUM')
A JOTIME 6P 0 COLHDG('UHRZEIT')
A JOJOB 10A COLHDG('JOBNAME')
A JOUSER 10A COLHDG('BENUTZERNAME')
A JONBR 6P 0 COLHDG('JOBNUMMER')
A JOPGM 10A COLHDG('PROGRAMMNAME')
A JOOBJ 10A COLHDG('OBJEKTNAME')
A JOLIB 10A COLHDG('OBJEKTBIBLIOTHEK')
A JOMBR 10A COLHDG('TEILDATEINAME')
A JOCTRR 10P 0 COLHDG('GEÄNDERTE ANZAHL OD.')
A JOFLAG 1A COLHDG('MARKIERUNG: 1 ODER 0')
A JOCCID 10P 0 COLHDG('COMMIT-ZYKLUS-ID')
A JOINCDAT 1A COLHDG('UNVOLLST.')
A JOMINESD 1A COLHDG('MINIM. ESD')
A JORES 18A COLHDG('NICHT VERWENDET')
A JOESD 2000H COLHDG('INHALT')
A*
Dann..
CPYF FROMFILE(QTEMP/TYPE1)
TOFILE(QTEMP/JRNTYP1)
MBROPT(*REPLACE)
FMTOPT(*MAP)
Dann Datei erstellen JRNTMP1 wie JRNTYP1 aber statt JOESD die Felder der
betreffenden echten Datei anhängen.
Dann...
CPYF FROMFILE(QTEMP/JRNTYP1)
TOFILE(QTEMP/JRNTMP1)
MBROPT(*REPLACE)
FMTOPT(*NOCHK)
Fertig! Auswerten mit z.B. SQL...
Ich hoffe Du kommst klar damit.
kuempi
-
Hallo,
warum hast Du die Text-Angabe doppelt codiert?
Das korrekte Statement müsste so aussehen:
PHP-Code:
insert into jrnanz/SOURCES1
SELECT 1 , 1 ,' A ' concat WHFLDI concat ' ' concat
case when whfldd=0 then substr(digits(whfldb) , 3 , 3)
else ' 'concat digits(whfldd) end
concat whfldt concat
case when whfldp=0 then ' '
else substr(digits(WHFLDp) , 1 , 2) end
concat
Case When Length(Trim(Left(WHFTXT, 28) <> 0
Then ' TEXT(' concat
'''' concat trim(left(WHFTXT , 28)) concat ''''
concat ')' end
from jrnanz/fields
Übrigens mit der skalaren Funktion Space(Zahl) kann man eine beliebige Anzahl *Blanks generieren: z.B. bei Space(5) werden 5 aufeinanderfolgende Blanks generiert.
Birgitta
-
bekomme jetzt folgenden Fehler:
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 FLGNR. Letzte Änderung
1 insert into jrnanz/SOURCES1
2 SELECT 1 , 1 ,' A ' concat WHFLDI concat ' ' concat
3 case when whfldd=0 then substr(digits(whfldb) , 3 , 3)
4 else ' 'concat digits(whfldd) end
5 concat whfldt concat
6 case when whfldp=0 then ' '
7 else substr(digits(WHFLDp) , 1 , 2) end
8 concat
9 Case When Length(Trim(Left(WHFTXT, 28) <> 0
10 Then ' TEXT(' concat
11 '''' concat trim(left(WHFTXT , 28)) concat ''''
12 concat ')' end
13 from jrnanz/fields
* * * * * E N D E D E R Q U E L L E * * * * *
5722SS1 V5R3M0 040528 SQL-Anweisungen ausführen SQL 01.09.06 09
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 FLGNR. Letzte Änderung
MSG ID WTK SATZ TEXT
SQL0104 30 9 Position 50 Token <> ungültig. Gültige Token: ).
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Fehler der Wertigkeitsstufe 30 in Quelle gefunden.
-
Hallo,
vielleicht solltest du mal genauer beschreiben, was du eigentlich machst und was du damit erreichen willst. Mir scheint, dass das mit einem relativ einfachen
create table as
(select joccid, joentt, ..., b.*
from xxxjrn, xxx b
) with no data
in einem ratsch und einfacher geht.
mfg
Dieter Bender
der keine Ratespiele mag
Zitat von muadeep
bekomme jetzt folgenden Fehler:
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 FLGNR. Letzte Änderung
1 insert into jrnanz/SOURCES1
2 SELECT 1 , 1 ,' A ' concat WHFLDI concat ' ' concat
3 case when whfldd=0 then substr(digits(whfldb) , 3 , 3)
4 else ' 'concat digits(whfldd) end
5 concat whfldt concat
6 case when whfldp=0 then ' '
7 else substr(digits(WHFLDp) , 1 , 2) end
8 concat
9 Case When Length(Trim(Left(WHFTXT, 28) <> 0
10 Then ' TEXT(' concat
11 '''' concat trim(left(WHFTXT , 28)) concat ''''
12 concat ')' end
13 from jrnanz/fields
* * * * * E N D E D E R Q U E L L E * * * * *
5722SS1 V5R3M0 040528 SQL-Anweisungen ausführen SQL 01.09.06 09
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 FLGNR. Letzte Änderung
MSG ID WTK SATZ TEXT
SQL0104 30 9 Position 50 Token <> ungültig. Gültige Token: ).
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Fehler der Wertigkeitsstufe 30 in Quelle gefunden.
Similar Threads
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By rebe in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 14-12-06, 12:57
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 26-10-06, 10:07
-
By ChrisX in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 11-10-06, 15:31
-
By Flappes in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 06-10-06, 08:39
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