-
Leider hatte ich Debug-Modus eh vorher schon probiert aber da kann ich leider keinen Hinweis finden:
Code:
RPG-PGM:
Der Zugriffsplan der Abfrage wurde erneut erstellt.
****: Debug-Nachrichten für Abfrage werden beendet.
ODP erstellt.
Blockung für Abfrage.
Cursor SQLCSR eröffnet.
Anweisung GET DIAGNOSTICS beendet.
Zeichen in CAST-Argument ungültig.
Schritt in Zeile 1168 beendet.
STRSQL:
****: Debug-Nachrichten für Abfrage werden beendet.
ODP erstellt.
Blockung für Abfrage.
Verbindung zur relationalen Datenbank DEGRPA50 beendet.
SQL-Cursor geschlossen.
Das mit dem coalesce hätte ich schon im Hinterkopf.
Meine Anforderung war das ich folgenden RPG-Code als Sql-Statement abbilden wollte:
Code:
FILE: ART1P ART2P ART3P
FELD: ARTBZ1 ARTBZ2 ARTBZ3
READ ART1P
CHAIN KEY3 ART3P;
*IN50 = NOT %FOUND;
IF *IN50;
ARTBZ3 = *BLANKS;
else;
ARTBZ1 = ARTBZ3;
endif;
if ARTBZ1 = *blanks;
chain tnr ART2P;
if %found(ART2P);
ARTBZ1 = ARTBZ2;
endif;
endif;
Inhalt von ARTBZ1 wird dem Bildschirmfile zugewiesen
Hier habe ich das nur mit dem Case-Konstruct hingebracht.
-
Drück mal auf der Meldung "Zeichen in cast ungültig" auf F1 um die Details zur Meldung anzusehen.
Manuell ist es schon aufwändig den cast zu entdecken.
Dazu musst du alle Ausprägungen der Where und On-Klauseln prüfen. Irgendwo gibt es da einen Wechsel von Zeichen auf Numerisch.
Nun, dein Chain entspricht dem Left Join, die Feldauswahl dann dem COALESCE.
-
Verschachtelte Sub-Selects sind selten eine gute Idee.
Irgendeiner der verschachtelten Sub-Select liefert unter irgendeiner Konstellation einen krummen Wert.
ggf. liefern auch alle 3 Felder NULL-Werte und ohne Cast weiß der Optimizer nicht in welchen Datentypen er den NULL-Wert konvertieren soll.
Mit LEFT OUTER JOINS sollte das Ganze entwirrt und sogar performater werden.
Etwa so:
Code:
Select ...
Coalesce(NULLIF(TBL1BEZ, ''), ART2BEZ, ARTBZ1, ARTBZ2) as BEZ
FROM TABLE1 A INNER JOIN TABLE2 ON TBL1CDE = TBL2ACD
left outer Join ART2P on Tbl1IMP = PETIMP and Tbl1TNR = PETTNR
left outer join ART1P on Tbl1TNR = ARTNR
Birgitta
-
Hm, sagte ich das nicht bereits;-)?
Aber danke, dass du mich bestätigst.
-
Danke aufrichtig für die Hilfe.
Das Problem lag an meiner Datenstruktur, da hatte ich die falsche Reihenfolge (
Das Coalesce habe ich eingefügt und ist wirklich sehr performant.
Similar Threads
-
By olbe in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 28-12-06, 14:53
-
By deni87991 in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 08-08-06, 14:50
-
By jakarto in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-07-06, 14:41
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 10-07-06, 12:58
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 15:11
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