Probleme bei Concat. und Funktionen mit Parametern
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 2 Monaten von
Anonym.
-
AuthorPosts
-
17. Juli 2005 um 19:57 Uhr #2574
AnonymGastHallo zusammen,
per "IBM DB2 UDB for iSeries .NET provider†greife ich auf eine DB2 zu und habe bei der Concatenation und auch bei Funktionen Probleme, wenn ich hierbei Parameter verwende. Zwei Beispiele:
#1
SELECT * FROM Tabelle WHERE Feld1 LIKE @Par1 || ‚%‘#2
SELECT * FROM Tabelle WHERE POSSTR(Feld1,@Par1) > 1Die Parameter werden definitiv korrekt übergeben, aber sobald ich hiermit Concatenation betreibe oder sie in Funktionen verwende bekomme ich nicht das gewünschte Ergebnis. Es wird aber auch kein Fehler zurückgegeben. Ersetze ich den Parameter durch den übergebenen Wert sozusagen hardcoded, läuft alles einwandfrei.
Kann man Parameter nicht in Funktionen verwenden oder mit ihnen in SQL-Statements "arbeiten"?
Danke im voraus.
Gruß
Markus
18. Juli 2005 um 11:57 Uhr #3018
AnonymGastHallo Markus,
das sollte eigentlich kein Problem sein. Hast Du schon nachgeprüft, ob die Parameter evtl. mit Leerzeichen aufgefüllt wurden? Falls in der DB2-Funktion der Parameter vom Typ CHAR() definiert ist, könnte das beispielsweise der Fall sein. Dann würde ein RTRIM(Parameter) das Problem lösen.
Gruss,
Alex
18. Juli 2005 um 12:49 Uhr #3329
AnonymGastHallo Alex,
ich verwende einen Parameter vom Typ VARCHAR, von daher sollte das Problem nicht auftreten. Ich habe dennoch bereits vor ein paar Tagen RTRIM versucht. Hierbei bekomme ich jedoch die Fehlermeldung "SQL0418 Use of parameter marker not valid". Die SQL-Syntax sieht wie folgt aus:
SELECT * FROM Tabelle WHERE POSSTR(Feld1,RTRIM(@Par1)) > 1
bzw.
SELECT * FROM Tabelle WHERE Feld1 LIKE RTRIM(@Par1) || ‚%‘
Von daher bin ich etwas ratlos.
Gruß
Markus
19. Juli 2005 um 7:29 Uhr #3525
AnonymInaktivich weiss jetzt leider nicht, wie von dezentraler Seite das Statement aufgelöst wird, aber im Hostumfeld gilt für dynamisches SQL:
"parameter marker unterliegen Einschränkungen
[…]
– das Argument einer scalar function kann nicht direkt durch einen parameter marker spezifiziert werden"und
"parameter marker dürfen nicht benutzt werden
[…]
– als Operand eines CONCAT-Operators"(Zitate aus dem Denne)
ich denke mal, ähnliche Einschränkungen gelten auch im dezentralen Umfeld
-
AuthorPosts
You must be logged in to reply to this topic.