-
order by case when :a = 12 then a35#07 else feldB end, erzeugt Fehler
Hallo,
ich versuche in SQL nach einem Feld a35#07 zu sortieren. Dieses Feld ist als char(35) in der Tabelle definiert. Andere Aktionen damit laufen normal.
Bei dem Versuch nach diesem Feld innerhalb eines CASE WHEN zu sortieren versucht RPG den Feldinhalt in decimal(7,0) umzuwandeln, was natürlich nicht geht.
(Außerhalb eines CASE WHEN geht es).
Ich wollte mir halt den Umweg über Prepare Statement sparen.
Gibts dafür eine Lösung?
(order by :var1, geht gar nicht)
LG, Martin
Joblog:
CPD4019 SELECT/OMIT-Fehler in Feld Cast(Translate(STDDATIH_2.A35#07, *UNNAMED Table) AS Decimal(7,0)), Teildatei STDDATIH.
SQL0802 Fehler bei Datenumsetzung oder beim Zuordnen von Daten.
-
Setzt mal den Feld-Namen in Anführungszeichen, also "A35#07".
Was passiert dann?
Birgitta
-
Das hilft leider nicht. Habe ich schon probiert.
Auch das Verschachteln mit einem Subselect und umbenennen der Spalte hilft nicht.
Auch 'a35'||chr(35)||'07' hilft nicht.
Das # wird als Anweisung zum "Cast as decimal" verstanden, und da geht bisher kein Weg vorbei.
-
Es geht doch nichts über EDI-Probleme ;-)
Und wenn Du eine View darüber machst?
GG 4474
-
Ein Order By erlaubt meines Wissens nach keine Ausdrücke mehr sondern bezieht sich immer auf die Ergebnisfelder.
Also, wenn man dynamische Sortierung benötigt, dann ein berechnetes Feld bilden und danach dann sortieren:
select ..... Ausdruck as OrderByAusdruck
from ....
order by OrderByAusdruck
-
Zitat von Fuerchau
Ein Order By erlaubt meines Wissens nach keine Ausdrücke mehr sondern bezieht sich immer auf die Ergebnisfelder.
Da bist Du falsch informiert! Im OrderBy können sowohl die Ausdrücke als auch die neuen Spalten-Namen verwendet werden.
In den WHERE-Bedinugnen, im Group by und im Having dürfen nur die Ausdrücke, nicht jedoch die neuen Spalten-Namen angegeben werden.
Das war aber schon immer so, dass innerhalb des gleichen Sub-Selects die neuen Spalten-Namen nicht verwendet werden dürfen.
Order By zählt nicht zum Sub-Select und deshalb können auch die neuen Spalten-Namen verwendet werden.
Birgitta
-
Ich habe gerade eine Datei generiert mit "exotischen" Feld-Namen und hatte keine Probleme.
Die folgenden Statements konnten alle problemlos ausgeführt werden:
Code:
Create Table qtemp/mytable
(A35#07 Integer,
A45#08 VarChar(10));
insert into myTable
Values(1, 'AAA'), (2, 'BBB'), (3, 'CCC')
With NC;
Select A35#07, A45#08
from MyTable
Where A35#07 = 2
Order By A45#08;
Birgitta
-
Schaut euch mal die Meldung noch mal genauer an:
"SELECT/OMIT-Fehler in Feld Cast(Translate(STDDATIH_2.A35#07, *UNNAMED Table) AS Decimal(7,0)),"
Mit dem Feldnamen hat das nichts zu tun (der wird erkannt) sondern mit einem fehlerhaften Vergleich.
Das Feld A35#07 wird mit einem anderen Feld oder Konstanten in Decimal(7,0) verglichen (FELDB?). Dies führt beim Optimizer leider zum Problem des falschen casts, was zur Laufzeit dann zu einem Fehler führt, wenn der Inhalt nicht konvertierbar ist.
Sieh zu, dass der Vergleichswert eher in CHAR gecastet wird.
Was den Feldnamen angeht, so ist das "#"-Zeichen bei einer angepassten CCSID nicht mehr ansprechbar.
Setze den Job z.B. auf CCSID(500) und das Feld wird nicht mehr gefunden, auch nicht in Anführungszeichen. Ganz schön fatal sowas, aber das ist ja ein anderes Thema.
-
Habe das Statement jetzt auch aus anderen Gründen in Text umgebaut und mit Prepare verwendet.
Falls du deine Testdatei noch hast probier mal so, wie es im Thema steht, also mit
"order by case when :a = 12 then a35#07 else feldB end".
Similar Threads
-
By mojo in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 27-05-15, 11:01
-
By JoergHamacher in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 13-04-15, 10:38
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 04-07-14, 11:20
-
By Robi in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-05-03, 14:14
-
By Burgy Zapp in forum NEWSboard Server & Hardware Markt
Antworten: 5
Letzter Beitrag: 08-07-02, 14:39
Tags for this Thread
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