-
SQL UDF und LibListe
Hallo,
ich habe mehrere SQL UDF geschrieben und mittels QM erzeugt (*SVRPGM), indem ich die CREATE FUNCTION Skripte einfach gestartet habe. Die UDF greifen auf unqualifizierte Tabellen zu, der Zugriff erfolgt anhand der LibListe (Ich benutze System Naming). So weit, so gut.
Nun habe ich die Funktionen in das Versionverwaltung ARCAD "gesteckt", und die SQL Skripte (CREATE FUNCTION) sind in SRC Files gespeichert und werden mit CRTSQLOBJ "compiliert". Auch jetzt entstehen *SRVPGMs. Doch sie benutzen zur Laufzeit offenbar nicht mehr die LibListe, sondern suchen die Tabellen in der LIB, in der sie selbst erzeugt wurden und liefern dann einen Laufzeitfehler.
Da die Library, in der die Tabellen stehen, aber wechseln können muss, bin ich auf "den Suchpfad" über die LIBLISTE angewiesen und kann die Tabellen nicht fest qualifizieren.
Hat jemand eine Idee, woran das liegen koennte?
Danke vorab!
Nils
-
Hallo,
offenkundig an ARCAD, was immer das sein mag, ich würde mir mal die generierten Serviceprogramme anschauen (PRTSQLINF), da stehen die Compile Options drin, aus dem Repository müssten die auch zu ersehen sein (select * from sysfuncs o.ä.). Möglicherweise kommt man dem ARCAD auch mit set Option ind er SQL Quelle bei, falls ihn das nicht überfordert.
Als Work around für variable Libs ginge da eventuell auch noch ein set schema aus dem Programm vor Ausführung der Function.
mfg
Dieter Bender
 Zitat von Nils_V
Hallo,
ich habe mehrere SQL UDF geschrieben und mittels QM erzeugt (*SVRPGM), indem ich die CREATE FUNCTION Skripte einfach gestartet habe. Die UDF greifen auf unqualifizierte Tabellen zu, der Zugriff erfolgt anhand der LibListe (Ich benutze System Naming). So weit, so gut.
Nun habe ich die Funktionen in das Versionverwaltung ARCAD "gesteckt", und die SQL Skripte (CREATE FUNCTION) sind in SRC Files gespeichert und werden mit CRTSQLOBJ "compiliert". Auch jetzt entstehen *SRVPGMs. Doch sie benutzen zur Laufzeit offenbar nicht mehr die LibListe, sondern suchen die Tabellen in der LIB, in der sie selbst erzeugt wurden und liefern dann einen Laufzeitfehler.
Da die Library, in der die Tabellen stehen, aber wechseln können muss, bin ich auf "den Suchpfad" über die LIBLISTE angewiesen und kann die Tabellen nicht fest qualifizieren.
Hat jemand eine Idee, woran das liegen koennte?
Danke vorab!
Nils
-
Hallo Dieter,
danke für den Tipp! In PRTSQLINF kommt tatsächlich zum Vorschein, dass der Parameter DFTRDBCOL auf die Lib gestellt ist, in der die UDF kreiert wurde. Möglicherweise wird dadurch die Benutzung der *LIB verhindert. (Im anderen Testfall steht er auf *NONE).
Jetzt muss ich schauen, wie ich den Param in ARCAD (www.arcadsoftware.com) verstellen kann.
-
Hallo Nils
 Zitat von Nils_V
Möglicherweise wird dadurch die Benutzung der *LIB verhindert. (Im anderen Testfall steht er auf *NONE).
Nicht nur möglicherweise, sondern ganz bestimmt!
Wird bei der Default Collection (DFTRDBCOL) eine Bibliothek angegegeben, wird zunächst der Befehl SET CURRENT SCHEMA ausgeführt. Dieser Befehl bewirkt, dass nur die in diesem Befehl angegebene Bibliothek durchsucht wird und die Bibliotheksliste nicht berücksichtig wird. Dies gilt nicht nur für SQL-Naming, sondern auch dann wenn System-Naming verwendet wird.
Birgitta
-
Danke, Birgitta,
ein neues Fragezeichen hat sich ergeben, als ich die Funktion mit RUNSQLSTM und DFTRDBCOL = *NONE erzeugt habe. Sie wurde in einer Lib erzeugt, die gar nicht in meiner Libliste ist!
Gibt es noch einen Parameter, der beeinflusst, IN WELCHER Lib die UDF erzeugt wird? Im CREATE FUNCTION ist der Name nämlich nicht qualifiziert.
Und noch eine Frage: was passiert, wenn ich das SRVPGM einfach mit PDM lösche, mit dem Eintrag in SysFunc? Der ist doch dann nicht mehr korrekt, oder? Also immer mit DROP FUNCTION löschen?
Nils
-
Hallo,
drop function ist schon der bessere Weg, damit da keine Inkonsistenzen entstehen. Achtung: Funcrions können überladen werden, da kann es also mehrere gleichnamige im selben Schema geben, die sich durch die Struktur der Parameterliste unterscheiden, dann muss man das beim drop näher spezifizieren.
Als Ort kommen da Curlib und default Schema in Frage, letzteres könnte heißen wie der Benutzer, wenn keines gesetzt wurde.
mfg
Dieter Bender
 Zitat von Nils_V
Danke, Birgitta,
ein neues Fragezeichen hat sich ergeben, als ich die Funktion mit RUNSQLSTM und DFTRDBCOL = *NONE erzeugt habe. Sie wurde in einer Lib erzeugt, die gar nicht in meiner Libliste ist!
Gibt es noch einen Parameter, der beeinflusst, IN WELCHER Lib die UDF erzeugt wird? Im CREATE FUNCTION ist der Name nämlich nicht qualifiziert.
Und noch eine Frage: was passiert, wenn ich das SRVPGM einfach mit PDM lösche, mit dem Eintrag in SysFunc? Der ist doch dann nicht mehr korrekt, oder? Also immer mit DROP FUNCTION löschen?
Nils
-
Danke, Birgitta,
ein neues Fragezeichen hat sich ergeben, als ich die Funktion mit RUNSQLSTM und DFTRDBCOL = *NONE erzeugt habe. Sie wurde in einer Lib erzeugt, die gar nicht in meiner Libliste ist!
Gibt es noch einen Parameter, der beeinflusst, IN WELCHER Lib die UDF erzeugt wird? Im CREATE FUNCTION ist der Name nämlich nicht qualifiziert.
Und noch eine Frage: was passiert, wenn ich das SRVPGM einfach mit PDM lösche, mit dem Eintrag der UDF in der SysFunc table? Der ist doch dann nicht mehr korrekt, oder? Also immer mit DROP FUNCTION löschen?
Nils
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 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
-
By SReusch in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 13-01-06, 07:13
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