PDA

View Full Version : SQL-Funktion REPLACE mit Fehler



ltsrole
30-06-04, 07:22
Kann mir jemand erklären, warum dieser Befehl auf der iSeries nicht funktioniert:

UPDATE kennzp SET bem1 = REPLACE(bem1,'xxxxxxx','yyyyyy')
where bem1 like '%ARTIKEL%'

Fehlermeldung:
REPLACE der Art *N in *LIBL nicht gefunden.

Wenn ich diesen Befehl über ODBC aufrufe, wird er verarbeitet.

Vielen Dank im voraus
MfG
Roland

Fuerchau
30-06-04, 07:28
Die AS/400 kennt den REPLACE noch nicht.
Wenn du Über ODBC gehst und es funktioniert, verwendest du sicherlich kein SQL-Passthru sondern z.B. MS-ACCESS.
Dieser ist in der Lage, bestimmte SQL-Funktionen zu ersetzen, so dass sie auch auf der AS/400 funktionieren.
Ich kann in Access ja auch eigene Funktionen (in VB-Modulen) schreiben, die ich in den SQL's dann verwenden kann. Genauso verhält es sich mit REPLACE.

B.Hauser
30-06-04, 08:01
Fehlermeldung:
REPLACE der Art *N in *LIBL nicht gefunden.


Die REPLACE-Funktion ist erst mit Release V5R3M0 verfügbar.
Je nach Anforderung kannst Du den REPLACE eventuell durch TRANSLATE ersetzen.
Andererseits Du kannst Dir auch eine RPG-Funktion, die die Built-in-Funktion %Replace() verwendet, erstellen. Anschliessend erstellst Du über den SQL-Befehl CREATE FUNCTION aus dieser RPG-Funktion eine UDF (User defined Function). UDFs kannst Du wie jede Skalare Funktionen einsetzen.

Birgitta

ltsrole
30-06-04, 15:21
Vielen Dank für die Infos

Roland