-
SQL-Aufruf eines Webservices in SQL-Funktion einbauen
Hallo,
ich habe zur Ermittlung der Ähnlichkeit zweier Texte einen REST-Webservice erstellt. Diesen kann ich per SQL auch problemlos aufrufen. Das sieht z.B. folgendermaßen aus:
Code:
SELECT *
FROM XMLTABLE('$doc/levenshteinData'
PASSING
XMLPARSE(DOCUMENT SYSTOOLS.HTTPGETCLOB
('http://ban:8080/webservices/levenshtein/text1/' concat systools.urlencode('Muhammad', 'UTF-8') concat '/text2/' concat systools.urlencode('Mohammed', 'UTF-8'),''))
AS "doc"
COLUMNS
Text1 VARCHAR(1000) PATH 'text1',
Text2 VARCHAR(1000) PATH 'text2',
Similarity DECIMAL(5, 2) PATH 'similarity'
) AS WebServiceResult;
Jetzt würde ich das gerne in eine SQL-UDF einbauen, der ich die beiden Texte als Parameter übergebe und dann den Ergebniswert zurückgebe. Das habe ich so versucht:
Code:
CREATE OR REPLACE FUNCTION DTOBJ/GETSIMILARITY (
P_TEXT1 VARCHAR(1000) ,
P_TEXT2 VARCHAR(1000))
RETURNS DECIMAL(5, 2)
LANGUAGE SQL
SPECIFIC DTOBJ/GETSIMILARITY
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
BEGIN
-- Variablen
DECLARE SIMILAR DECIMAL(5, 2) DEFAULT 0;
SELECT Similarity into SIMILAR
FROM XMLTABLE('$doc/levenshteinData'
PASSING
XMLPARSE(DOCUMENT SYSTOOLS.HTTPGETCLOB
('http://ban:8080/webservices/levenshtein/text1/' concat systools.urlencode(P_TEXT1, 'UTF-8') concat '/text2/' concat systools.urlencode(P_TEXT2, 'UTF-8'),''))
AS "doc"
COLUMNS
Text1 VARCHAR(1000) PATH 'text1',
Text2 VARCHAR(1000) PATH 'text2',
Similarity DECIMAL(5, 2) PATH 'similarity'
) AS WebServiceResult;
RETURN SIMILAR;
END;
Die Erstellung der UDF meckert, dass das "doc" ungültig sei. Ich weiß jetzt aber nicht wie ich das sonst angeben könnte.
Geht das überhaupt? Kann ich so einen Aufruf in eine UDF packen? Wenn ja, wie?
Gruß,
KM
-
Ich hab jetzt selbst die Lösung gefunden...
Der Fehler trat nur auf, wenn ich die UDF per Script mit RUNSQLSTM erstellen wollte. Mit dem System i Navigator hat es schließlich funktioniert.
Gruß,
KM
-
Vielleicht ein CCSID-Problem mit dem $-Zeichen?
-
Nein, am $-Zeichen liegt das nicht. Scheint eher ein Problem mit dem RUNSQLSTM zu sein.
Wie gesagt mit dem System i Navigator hat es ja funktioniert.
Gruß,
KM
-
Kann es sein, dass Du im Skript über die Position 80 hinausgeschrieben hast, jedoch die Option MARGINS im Befehl RUNSQLSTM nicht verändert hast?
Wenn ich dein Beispiel anschaue, kommst du sicher über 80 Zeichen in der Breite, d.h. die halbe Zeile wurde einfach abgeschnitten und dann ist as "Doc" natürlich nicht zulässig.
Birgitta
-
 Zitat von KM
Nein, am $-Zeichen liegt das nicht. Scheint eher ein Problem mit dem RUNSQLSTM zu sein.
Wie gesagt mit dem System i Navigator hat es ja funktioniert.
Der Navigator verwendet eine andere Umgebung (CCSID, Datumsformat, usw.). Da kann es durchaus sein dass es nicht am RUNSQLSTM liegt sondern was anderen.
Wäre nicht das erste mal dass im Navigator was geht was im 5250 nicht geht oder umgekehrt.
lg Andreas
-
Das $ Zeichen is Teil der Syntax, da hat er keine andere Wahl (außer auf die Benennung zu verzichten)
Birgitta
-
@Birgitta:
Stimmt, es lag tatsächlich an der Breite. Ich wusste nicht, dass der RUNSQLSTM standardmäßig auf 80 Stellen eingestellt ist. Ich hab den Wert jetzt mal vergrößert. Jetzt funktioniert's.
Vielen Dank,
KM
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 14-02-18, 11:11
-
By homue in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 03-02-16, 14:06
-
By harkne in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 13-01-15, 16:43
-
By DEVJO in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 06-03-03, 11:35
-
By ppedv in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 24-10-02, 09:58
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