-
SQL Function aus RPGLE aufrufen...
Hallo liebe RPG Gemeinde,
ist es möglich aus einem RPG Programm heraus eine SQL Function aufzurufen ?
Habe mal etwas rumprobiert:
Code:
D PgmCALL PR ExtPGM(FU074)
D Parm1 3 INZ(*blanks)
D Parm2 4 0 INZ(*zeros)
D Parm3 1 inz(*blank)
D Parm4 21 Inz(*blanks)
*
*
D string S 21 inz(*blanks)
*
*
C CALLP pgmCALL('100':1234:'1':string)
C if string > *blanks
* //
C ENDIF
*
C eval *inlr = *on
FU074 ist die erstellte Function (Modul), ein Serviceprogramm mit dem Namen FU074 gibt es auch...
Function wurde wie folgt erstellt:
Code:
CREATE FUNCTION PGM/FU074
( MANDANT CHAR(3),
KST DEC(4, 0),
ART CHAR(1)
) RETURNS CHAR(21)
LANGUAGE RPGLE
EXTERNAL NAME 'PGM/FU074(SQL_FUNC)'
NO SQL
NO EXTERNAL ACTION
Der Compiler teilt mir 7030 er Fehler mit, FU074 ist nicht definiert und Parameter kann nicht nach Referenz übergeben werden, wenn er
beim Aufruf geändert werden kann.
Umgewandelt habe ich mein Testprogramm mit dftactgrp *no
Hoffe auf Eure Antworten,
Gruß
Mäxxchen
-
Hallo,
SQL-Funktionen lassen sich per embedded SQL aufrufen:
Code:
C/EXEC SQL
C+ SET :ERGEBNIS = SQLFUNKTION(:parm1, :parm2, ...)
C/END_EXEC
Gruß
M.Withake
-
![Zitat](images/misc/quote_icon.png) Zitat von Bratmaxxe
Hallo liebe RPG Gemeinde,
ist es möglich aus einem RPG Programm heraus eine SQL Function aufzurufen ?
VIelleicht stehe ich grade auf dem Schlauch (nein, ich sitze), aber wie wäre es mit embeddet SQL? Dazu finden sich hier doch einige Artikel, und Experten und Expertinnen liegen auf der Lauer, um Dir zu helfen ;-)
-h
-
c/exec-sql
c+ set myvar = mysqlfunc(parm1, parm2, ...)
c/end exec
Da es eine SQL-Funktion ist, musst du auch SQL bemühen.
-
der code der function ist wie folgt:
Code:
H NOMAIN
FT3TABPK IF E K DISK
DSQL_FUNC PR 21A
D MANDANT 3
D KST 4 0
D ART 1
PSQL_FUNC B EXPORT
DSQL_FUNC PI 21A
D MANDANT 3
D KST 4 0
D ART 1
C* //Initialisierung Work-Felder
D TEXT3 S 3 INZ(*BLANKS)
D TABELLE S 10 INZ('N0210')
D VERSION S 1 INZ('1')
D KST15 S 15
D STRING S 21 INZ(*BLANKS)
C*
// Datei lesen..... usw.
C RETURN STRING
C* -----------------------------------------------------------------
C* ENDE der Prozedur
C* -----------------------------------------------------------------
C CLOSE T3TABPK
PSQL_FUNC E
Es gibt dazu ein Modul und ein Serviceprogramm.
Die Function an sich ist ja kein SQL, sondern normal RPG, ich verstehe nur nicht, warum man die nicht anders aufrufen kann ?
MfG
Mäxxchen
-
Hallo,
Eine (RPG-)Funktion ist eine Prozedur mit Rückgabe-Wert, die nicht mit CALLP sondern z.B. über EVAL oder IF oder DOU ... usw. wie eine Built-In-Funktion aufgerufen wird.
Also z.B.
PHP-Code:
/Free
Ergebnis = MyFunc(Param1: Param2: ... ParamX);
If MyFunc2(Parm) > *Zeros;
EndIf;
/End-Free
Auch wenn eine RPG-Funktion als SQL-Funktion registriert ist, kann ich sie immer noch native aufrufen.
Bei der Registrierung einer externen Funktion als SQL-Funktion wird dieser Funktion lediglich eine SQL-Kennung zugeordnet, über die diese Funktion aus SQL heraus aufgerufen werden kann.
Birgitta
-
Die Funktion steckt in einem Service-Programm, also musst du die Funktion als externe Funktion und nicht als Programm deklarieren und anschließend mit dem Serviceprogramm binden.
1. CRTRPGMOD
2. CRTPGM ... BNDSRVPGM(...)
-
Vielen lieben Dank !
Gruß
Mäxxchen
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By KM in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-08-06, 10:34
-
By jakarto in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-07-06, 13:41
-
By Stefan_Sk in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 26-05-06, 16:37
-
By Xanas in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 23-02-06, 10:29
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