-
Jobname im SQL ermittlen
Hallo liebe Forumsmitglieder,
ich suche eine performante Möglichkeit, im SQL den Jobnamen und Jobnummer zu ermitteln. Ist für einen Trigger erforderlich, welcher diese Daten wegschreiben soll.
Den User kann ich ja mit
SELECT USER FROM SYSIBM.SYSDUMMY1 ermitteln. Finde aber nichts, wie ich den gesamten Job bekomme. Ein separater Programmaufruf ist mir aber zu langsam.
Any idea ?
__________________________________
-An eye for an eye leaves the whole world blind- -Mahatma Ghandi-
-
Dies kannst du nur mit einer externen SQL-Funktion, CLP mit RTVJOBA oder RPG/LE aus der SDS ermitteln.
-
Danke, dann werd ich das wohl so machen müssen.
__________________________________
-An eye for an eye leaves the whole world blind- -Mahatma Ghandi-
-
die Performance ist ggf. auch zu vernachlässigen, da du diese Funktion nicht unbedingt bei jedem Aufruf benötigst.
In einer externen SQL-Funktion/Prozedur kann ich das in einer statischen Variablen speichern.
Bei nativen SQL-Prozeduren wirds da schon schwieriger.
-
Job im SQL feststellen
Zitat von Fuerchau
Dies kannst du nur mit einer externen SQL-Funktion, CLP mit RTVJOBA oder RPG/LE aus der SDS ermitteln.
Hallo!
Ich habe genau das gleiche Problem, schaffe es aber nicht mit der Ext. Function.
Hab mir ein CL gemacht, welches mit Job u. Nr zurückliefert:
PGM PARM(&JOB_JOBNR)
DCL &JOB_JOBNR *CHAR 17
DCL &JOB *CHAR 10
DCL &JOBNR *CHAR 6
RTVJOBA JOB(&JOB) NBR(&JOBNR)
CHGVAR VAR(&JOB_JOBNR) VALUE(&JOB *CAT ' ' *CAT &JOBNR)
ENDPGM
Hab auch schon in der SQL-Referenz über die Erstellung von ext. Functions nachgelesen, aber es funktioniert nicht.
Kann mir bitte jemand helfen?
Danke,
Günter
-
Was klappt wo nicht?
Ein bisschen mehr Informationen bräuchten wir schon.
Wird die Stored Procedure nicht erstellt?
Wie sieht der CREATE-Befehl für die Stored Procedure aus?
Tritt das Problem beim Aufruf auf?
Wie sind die Variablen im SQL definiert, wie wird die Prozedur aufgerufen?
Birgitta
-
Hallo!
Naja, ich möchte gern wissen, wie genau eine ext. Funct. definiert werden muß, die dann den Jobnamen und die Jobnummer liefert.
Ich habe mal obiges CL erstellt, welches das grundsätzlich erledigt.
Wenn ich dann z.B. eine Function so erstelle u. verwende:
create function sqljob ()
RETURNS TABLE (job_jobnr CHAR(17))
EXTERNAL NAME sqljob
LANGUAGE CL
PARAMETER STYLE DB2SQL
NO SQL
DETERMINISTIC
NO EXTERNAL ACTION
CALLED ON NULL INPUT
DISALLOW PARALLEL
Routine SQLJOB wurde erstellt, kann aber nicht gesichert oder zurück
select sqljob() from dual
Verwendung von Funktion SQLJOB ungültig.
Hab aber auch schon andere Varianten probiert (z.B. mit RETURNS CHAR), aber ich will es eigentlich nicht durch Herumprobieren herausfinden, wie die ext. Funct. dann richtig erstellt werden soll.
Die Tabelle DUAL hab ich mir aus meiner Oracle-Zeit mitübernommen. Ist eine Tabelle mit einem Feld und einem Wert. Macht eigentlich das gleiche wie mit SYSDUMMY1.
Danke,
Günter
-
Ein CLP kann keine TABLE zurückgeben sondern halt nur einen Wert.
Eine TABLE geht nur mittles RPGLE und einer DS.
-
Hallo!
Ja, klar, hab das so vom SQL-Referece-Manual übernommen.
Ich will eigentlich nur wissen, wie in einer SQL-Abfrage in einem Trigger der Job ermittelt werden kann. Genau so wie es im ersten Beitrag des Threads gefragt wird.
Danke,
Günter
-
Heißt das, dass Du einen SQL Trigger hast, in dem Du den aktuellen Job-Namen und die Job-Nr. benutzen willst?
In diesem Fall würde ich anstatt einer Funktion eine Stored Procedure schreiben, die dann über den SQL-Befehl CALL aufgerufen wird.
Eine Funktion zu schreiben ist mit CL etwas komplexer, da CL zum einen selber keine Rückgabe-Werte unterstützt und zum anderen bei Parametertyp DB2SQL ein Wust von zusätzlichen Parametern definiert werden muss.
PHP-Code:
CREATE PROCEDURE MYSCHEMA/GETJOBQUAL (
OUT POUTJOB CHAR(17))
LANGUAGE CL
SPECIFIC MYSCHEMA/GETJOBQUAL
DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'MYSCHEMA/GETJOBQUAL '
PARAMETER STYLE GENERAL ;
SQL Trigger:
PHP-Code:
...
Begin
Declare CurrJob Char(17);
Call GetJobQual(CurrJob);
...
End
Birgitta
-
Hallo!
Danke, ich merke schon, das führt zu nichts.
Wir haben hier das Problem, daß aus einer Tabelle "von niemanden" Daten gelöscht werden.
Also muß es ein Batch-Job sein (Schnittstelle, etc.).
Dazu habe ich einen Trigger auf die Datei gelegt, die die Daten beim Löschen in eine andere Tabelle wegkopiert und zusätzliche Infos, wie Jobname, JobNr, Benutzer und genaue Uhrzeit protokolliert.
Bis auf die Jobattribute ist alles fertig.
Es scheint mir aber der Aufwand dafür nicht in der Relation zu stehen, jetzt einen Exkurs in die Weiten von PHP, etc. zu machen, nur um für etwa eine Woche den Trigger laufen zu lassen. Denn dann dürfte das Problem behoben sein.
Da ja die genaue Zeit bekannt ist, werde ich einfach ins Joblog schauen und dort suchen, was da gelaufen ist.
Nochmal Danke,
Günter
-
ich verstehe ehrlich gesagt Dein Problem nicht!
Du hast noch nicht einmal die Frage beantwortet, ob es sich um einen SQL oder externen Trigger handelt!
Warum muss es unbedingt eine Funktion sein?!
Was spricht dagegen das CL als Stored Procedure zu registrieren (den CREATE PROCEDURE-Befehl habe ich im letzten Post angegeben), in Deinem Trigger über einen CALL aufzurufen (ebenfalls im letzten Post angegeben) und das Ergebnis, das Du ja als Output Parameter zurückbekommst in den nächsten Datensatz (der Insert fehlt im Post) zu schreiben.
... und glaub' mir das geht! Genau so funktioniert es in unseren SQL Triggern!
Birgitta
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
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