-
SQL und Servicprogramme
kann man im SQL auch eine bestimmte Prozedur aus einem Servicepramm aufrufen?
Grund ich habe ein Servicprogramm, dass sich um Berechtigungen kümmert mit mehreren Externen Prozeduren. Ich möchte aber eine Bestimmte aufrufen.
Xanas
-
Hallo,
das Zauberwort heißt create function
mfg
Dieter Bender
-
Ergänzung:
Wobei mit "Create Function" keine SQL-Prozedur (native SQL-Body) sondern eine externe SQL-Prozedur erstellt werden muss.
Die externe SQL-Prozedur kann dann ein RPGLE-Programm sein, dass dann die gewünschten Service-Routinen aufruft.
-
Ergänzung der Ergänzung: und selbige nicht mit CALL aufgerufen, sondern in einem select verwendet werden kann.
d*b
-
OK, dann gibts noch die Alternative mit "Create Procedure", für die die selben Bedingungen gelten, wie oben, diese muss dann per CALL aufgerufen werden:
call myprocedure (Parm1, Parm2, ...)
select myfunction(Parm1, Parm2, ...) from myfile
-
Hallo,
jede exportierte Prozedur aus einem Service-Programm kann entweder als externe Stored Procedure oder als externe User Defined Function registriert werden.
Als Stored Procedure wird eine Prozedur registriert, die keinen Rückgabewert hat. Eine Funktion, also eine Prozedur mit Rückgabewert kann als externe UDF registriert werden.
Beim externen Namen, muss lediglich das Service-Programm und die Prozedur angegeben werden
Beispiel:
PHP-Code:
CREATE FUNCTION MYUDF (
Parm1 CHAR(7) ,
Parm2 DEC(15, 5) ...) )
RETURNS VARCHAR(256)
LANGUAGE RPGLE
DETERMINISTIC
NO SQL
RETURNS NULL ON NULL INPUT
NO EXTERNAL ACTION
NOT FENCED
EXTERNAL NAME 'MYSCHEMA/MYSRVPGM(MYPROC)'
PARAMETER STYLE GENERAL ;
-
Allerdings muss diese Serviceprozedur gewisse Aufrufkonventionen (Übergabeparameter wie NULL-Flag's, SQLSTATE, Functionname, Specificname und DiagnosticMessage) einhalten.
Angaben siehe "Parameter Style".
Ich gehe mal davon aus, dass diese Konventionen bei obigen Serviceprozeduren nicht eingehalten wurden und somit sich ein direkter SQL-Aufruf ausschliessen läßt.
-
Ähm vielen Dank schon mal, der Aufruf funktioniert schon mal super, nur ein Problem habe ich noch, der Rückgabe wert ist ein N (Boolean) als was muss ich den Return dann in der Create function angeben?
-
Boolean geht nicht, versuchs einfach mit CHAR(1) bzw. ZONED(1, 0) und konvertiere den Wert passend.
-
Typenkonvertierung in der SQL Funktion oder in der Serviceprogrammfunktion, dass wäre schlecht, denn die kann ich nicht ändern, die wir ja schon in Tausenden Programmen verwendet.
-
Da du die SQL-Funktion doch neu machst, kannst du auch spezifizieren wie diese auszuwerten ist:
select case myfunction(parm) when 1 then 'TRUE' else 'FALSE' end, ...
oder
select case myfunction(parm) when 'Y' then 'TRUE' else 'FALSE' end, ...
-
Allerdings muss diese Serviceprozedur gewisse Aufrufkonventionen (Übergabeparameter wie NULL-Flag's, SQLSTATE, Functionname, Specificname und DiagnosticMessage) einhalten.
Angaben siehe "Parameter Style".
Ich gehe mal davon aus, dass diese Konventionen bei obigen Serviceprozeduren nicht eingehalten wurden und somit sich ein direkter SQL-Aufruf ausschliessen läßt.
Sorry hätte natürlich Parameter Style GENERAL sein müssen. (Im Beispiel oben geändert)
Bei GENERAL werden tatsächlich nur die beim Aufruf angegebenen Parameter übergeben.
(Bei Parameter Style SQL kommts auch nicht zum Abbruch, wenn die zusätzlichen Parameter nicht im Procedure Interface definiert sind, aber es ist unsauberes Design!)
@Xanas:
Bei Rückgabe-Wert N kann (zumindest seit V5R3) in der Definition der Funktion CHAR(1) ausgegeben werden, ohne weitere Konvertierung.
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