-
-
ShowCase & UDF - Danke erst mal
Hallo Leute,
vielen Dank für die Antworten.
Über den Link von Hr. Fuerchau bin ich auch schon gestolpert.
Da wir aber nur eine Lizenz auf dem Produktionsrechner haben, habe ich mir den Call verkniffen.
Die UDF prüft inhaltlich , ob für einen Nutzer in der DB zugelassenen Buchungscodes im übergebenen String ("quasi-Array") übereinstimmen.
Ich hatte das schon als SQL-Code verwurstet, da die Abfragen aber für mehrere Spalten notwendig sind ist es mit einer UDF auch besser zu bewerkstelligen.
In meinem 1. post genannter Code ist natürlich nur abgespeckt auf die UDF Funktion, um zu zeigen um was es geht.
Wie gesagt, über andere Clients oder strsql ist ja alles okay.
Ich hatte letzte Woche Kontakt zu help/systems: Experte wird informiert. Es gibt aber dafür keine Handbücher.
Danke erst mal für Eure Bemühungen!
Ich melde mich, falls sich was ergibt und dort jemand wach wird.
-
Was Dieters Vorschlag angeht, so kannst du auf der AS/400 eine View erstellen, die die UDF dann bereits enthält.
Showcase greift dann halt auf die View zu und hat dann keine Probleme mehr mit der UDF:
create mylib/myview as
select ... udf(...) as f1, udf(...) as f2, ...
from myfile
Dies hat auch den "charmanten" Vorteil, dass du die View jederzeit auch mit ggf. korrigierten oder erweiterten UDF's anpassen kannst ohne bestehende Abfragen damit zu kompromitieren.
-
 Zitat von Fuerchau
Was Dieters Vorschlag angeht, so kannst du auf der AS/400 eine View erstellen, die die UDF dann bereits enthält.
Showcase greift dann halt auf die View zu und hat dann keine Probleme mehr mit der UDF:
create mylib/myview as
select ... udf(...) as f1, udf(...) as f2, ...
from myfile
Dies hat auch den "charmanten" Vorteil, dass du die View jederzeit auch mit ggf. korrigierten oder erweiterten UDF's anpassen kannst ohne bestehende Abfragen damit zu kompromitieren.
Hallo,
danke für den Tipp. Hätte ich ja auch selbst drauf kommen können!
Ich habe das nun entsprechend Eures Vorschlag als View implementiert.
Via STRSQL oder externen SQL Client (Squirrel SQL) funktioniert das prima!
Leider versagt wieder ShowCase.
Diesmal mit der Warnmeldung *N.
Da bleibt mir wohl nichts anders übrig, als die Tabelle im Hintergrund zu erstellen und dann mit ShowCase abzugreifen.
Danke für die vielen Tipps.
Alex
-
 Zitat von alexk2013
Diesmal mit der Warnmeldung *N.
Gibt es vielleicht eine genauere Fehlermeldung zu *N?
-
Hallo Andreas,
leider nicht. Die Meldung erscheint im Client Fehler Fenster - hätte ich sonst gepostet.
-
Vielleicht gibt es ein Problem bei den Parametern (Stichwort VARCHAR und CHAR).
Du könntest auch den Databasemonitor starten. Dort bekommst du zumindest eine bessere Fehlermeldung zu sehen.
lg Andreas
-
Wichtig zu wissen ist, wo du die UDF registriert hast.
Üblicherweise hat man da eine Programmlib und nicht die Datenlib.
Per STRSQL arbeitest du mit *SYS-Naming, so dass die UDF gefunden werden kann.
Im Squirrel kannst du ggf. ja auch *SYS-Naming in der Verbindung angeben.
Showcase arbeitet nun ggf. mit *SQL-Naming, was bedeutet, dass die UDF nicht mehr gefunden wird.
Wenn du deine View erstellst, dann qualifiziere den Aufruf deiner UDF.
'*N'-Meldungen bekomme ich auch, wenn die
- UDF selber nicht gefunden wird
- die Parameter-Typen einer UDF nicht gefunden werden
Man kann nämlich durchaus mehrere UDF's mit dem selben Namen haben, wenn denn die Parameter unterschiedlich sind.
Es könnte also nun am "umschreiben" des SQL's durch den Optimizer liegen (der liest ja die Info aus der View) und deshalb die UDF nicht gefunden wird.
-
 Zitat von Fuerchau
Wichtig zu wissen ist, wo du die UDF registriert hast.
Üblicherweise hat man da eine Programmlib und nicht die Datenlib.
Per STRSQL arbeitest du mit *SYS-Naming, so dass die UDF gefunden werden kann.
Im Squirrel kannst du ggf. ja auch *SYS-Naming in der Verbindung angeben.
Showcase arbeitet nun ggf. mit *SQL-Naming, was bedeutet, dass die UDF nicht mehr gefunden wird.
Wenn du deine View erstellst, dann qualifiziere den Aufruf deiner UDF.
'*N'-Meldungen bekomme ich auch, wenn die
- UDF selber nicht gefunden wird
- die Parameter-Typen einer UDF nicht gefunden werden
Man kann nämlich durchaus mehrere UDF's mit dem selben Namen haben, wenn denn die Parameter unterschiedlich sind.
Es könnte also nun am "umschreiben" des SQL's durch den Optimizer liegen (der liest ja die Info aus der View) und deshalb die UDF nicht gefunden wird.
Hallo Herr Fuerchau,
also die UDF habe ich nach alter Art via SYS-naming mit RUNSQLSTM aus einem File-Source-Member registriert (lib/file im sql code).
Das SQL für die View habe ich aus einer Streamfile importiert und mit RUNSQLSTM mit SQL-naming registriert (lib.file im sqlcode). Sysnaming hat hier nicht geklappt, habe alles schon mal auf SYS-naming im Streamfile umgelötet - aber er hat es nicht gefressen, daher bin ich bei SQL-naming geblieben.
Gut, die Funktion und View und Daten sind nicht in derselben Bibliothek.
Die Funktion UDF und das RPG und die View sind in einer (QGPL for general purpose...) und die Daten in einer anderen Bibliothek.
Interessanterweise läuft die View ja über den externen Client Squirrel. Eine Bibliotheksliste ist dort nicht von mir angegeben unter Driver properties.
Allerdings ist in den Connection Properties "Specify Shema loading and caching" angegeben, das sollte aber nur frü den Objekt-Tree und sich wohl nicht auf die SQL-Ausführung auswirken.
Ich werde mal sehen, ob ich alles über SQL-naming via RUNSQLSTMT mit File-Source-Member glattziehe auf die klassische Art...
MFG
Alex
-
Wenn du die UDF mittels "QGPL.MYUDF(...)" in der View mit SQL-naming verwendest, sollte es funktionieren.
Die QGPL wird per Default (Systemwert QUSRLIBL) in die SQL-Serverjobs mit reingenommen wenn man keine Lib-Liste in der Verbindung angibt.
-
 Zitat von Fuerchau
Wenn du die UDF mittels "QGPL.MYUDF(...)" in der View mit SQL-naming verwendest, sollte es funktionieren.
Die QGPL wird per Default (Systemwert QUSRLIBL) in die SQL-Serverjobs mit reingenommen wenn man keine Lib-Liste in der Verbindung angibt.
Die UDF ist in der View so deklariert. Ich kann höchstens noch mal auf "uppercase" umstellen.
Was die Bilbiotheksliste betrifft: Mein Erfahrung ist, sie wirkt sich nicht bei jedem SQL Clienten aus. Jedenfalls weden ohne library Angabe keine Dateien erkannt (SQL-naming).
Bei ShowCase ist es wohl so - es ist dort separat vordefiniert.
Ich werde es morgen mal versuchen...
Schönen Abend noch...
-
JDBC / ODBC?
Ach, dazu kommt natürlich, daß der externe Squirrel Client mit JDBC und das ShowCase mit ODBC läuft.
Zumindest wird er über ODBC-Datenquellen-Administrator verwaltet und zugeordnet und nennt sich SCOJDBC.DLL. (wer weiß Warum scoJDBC.Dll).
Hier hören aber meine Kenntnisse auf, da die Installation vorpaketiert sind ...
Similar Threads
-
By Nils_V in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 18-07-16, 09:49
-
By Peder in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 06-12-06, 08:15
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 18-09-06, 13:39
-
By jakarto in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-07-06, 13:41
-
By HACHIMAN in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-05-06, 09:48
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