IMPROPER USE OF LONG STRING
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 14 Jahre, 11 Monaten von
Anonym.
-
AuthorPosts
-
29. September 2008 um 11:48 Uhr #3997
AnonymInaktivhallo,
bei folgender sql erhalte ich diese Message:
DSNT408I SQLCODE = -134, ERROR: Â IMPROPER USE OF LONG STRING COLUMN OR AN
    EXPRESSION THAT RESOLVES TO A LONG STRINGdas ist die ddl der Table:
ARGUMENTBEREICH Â Â Â 9 VARCHAR Â Â 254 Â
in der sql  ermittle ich die Länge für den SUBSTRING mit LENGTH aber trotzdem  kommt die Fehlermeldung. hat hier jemand eine Lösung ?
SELECT DISTINCT Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
D.BEDINGUNGSNAME, Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
E.FELDNAME, Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
E.OPERATOR!! Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
RTRIM(STRIP(REPLACE(SUBSTR(E.ARGUMENTBEREICH, 1,
LENGTH(E.ARGUMENTBEREICH)), ‚;‘, ‚|‘), B, ‚ ‚)) Â
FROM    Âregards Peter                        Â
1. Oktober 2008 um 6:21 Uhr #4172
AnonymInaktivHallo Peter,
ich würde den SQL mal Schritt für Schritt einfacher machen, bis der SQLCODE -134 verschwindet. Dann kann man die Ursache besser bestimmen und dann einen Lösungsvorschlag machen.
1. DISTINCT weglassen
wenn SQLCODE -134 immer noch vorhanden
2. Konkatinierung mit OPERATOR weglassen
wenn SQLCODE -134 immer noch vorhanden
3. RTRIM Â weglassen
wenn SQLCODE -134 immer noch vorhanden
4. STRIP weglassen
usw.Ist etwas mühsam aber ist trotzdem oft die schnellste Möglichkeit den Fehler einzugrenzen. Wenn du Resultate vorliegen hast, melde dich noch einmal.
Gruss Klaus
1. Oktober 2008 um 12:58 Uhr #4306
AnonymInaktivHallo Klaus,
das Problem ist die Column ARGUMENTBEREICH, denn die ist mit VARCHAR 254 definiert. sobald sich die Länge erweitert durch concat, tritt dieser Fehler auf. ich dachte aber da ich bei substr die tatsächliche Länge ermittle könnte ich dieses Problem umgehen. das scheint aber DB2 spezifisch zu sein, das keine Ausgabe länger als 255 Bytes sein darf.Gruß Peter
1. Oktober 2008 um 14:31 Uhr #4402
AnonymInaktivHallo Peter,
welche DB2-Version habt ihr. Ich dachte in V8 würde das auch mit Werten > 254 funktionieren.
Ich würde noch einmal einen SUBSTR( dein-string , 1 , 254)  versuchen.
Dein-String ist dabei ==>
E.OPERATOR!! Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
  RTRIM(STRIP(REPLACE(SUBSTR(E.ARGUMENTBEREICH, 1,
  LENGTH(E.ARGUMENTBEREICH)), ‚;‘, ‚|‘), B, ‚ ‚)) ÂDa sollte DB2 begreifen, dass das Gesamtresultat nicht grösser als 254 werden kann.
Gruss Klaus
-
AuthorPosts
You must be logged in to reply to this topic.