-
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.
-
Vielen lieben Dank noch mal an euch Drei.
Wo wäre ich, wenn es dieses Forum nicht gäbe, die Sache funktioniert mittlerweile echt super.
Ich habe mich dann für den Char(1) entschieden, der funktioniert auch wie erwartet.
Gruß
Xanas
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