[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2010
    Beiträge
    33

    SQL Funktion ruft Serviceprogramm auf - Parameter übergabe

    Hallo,
    ich habe ein Problem mit dem Aufrufen eines Seviceprogramms aus einer SQL-Funkrion herraus. Es wird zwar aufgerufen, aber es übernimmt die Werte nicht in das Serviceprogramm. Der Returnwert wird zurückgegeben.
    Die Funktion schaut so aus:

    Create Function arbeiten(Wert Char(7), Richtung Char(1) )
    Returns Char(7)
    Language RPGLE
    Specific arbeiten
    Not Deterministic
    Returns Null on Null input
    No external Action
    Not Fenced
    External Name 'ARBLIB/ARBSERVICE(ARBEITEN)';

    Das Modul Arbeiten im Serviceprogramm ARBSERVICE übernimmt die Werte so:

    D Arbeiten....PR.....7
    D Wert...............7
    D Richtung ..........1

    P arbeiten....b......... export
    d arbeiten... pi.....7
    d wert ..............7
    d richtung ..........1

    d arbeit_out ........7
    //free

    exec sql tu irgend was;

    arbeit_out = wert;

    return arbeit_out;

    /end-free
    P .........E

    Das Serviceprogramm macht was es soll. Die SQL-Funktion ruft auch das Serviceprogramm auf. Aber die Daten werden nicht übernommen. Nur zurückgegeben.

    Aufgerufen wird es dann über STRSQL und:

    select arbeiten(a.Dateiwert, '1'), a.Dateiwert from Arbeitsdate a

    Schon mal danke für die Hilfe.
    Loisl

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    SQL übergibt 3 Felder wobei das 3. Feld dein Returnwert ist.
    Das Ergebnis des RPG-Return wird ignoriert.

    Da kann man mal sehen, welche Probleme auftreten können, wenn es keine Laufzeitprüfung der Call-Parameter gibt.
    Mittels %parms() kann man die Anzahl der Parameter prüfen und darauf reagieren.
    Intern ist leider jede Funktion mit Anzahl Parameter 0 - 255 definiert.
    Deshalb gibts auch keine Laufzeitfehler bei falschen Aufrufen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Nov 2010
    Beiträge
    33
    Und wie komme ich dann an meine Werte ran, die von der Funktion übergeben werden?
    Bedeutet ich übegebe einen 7stelligen pseudowert? Und habe dann im zweiten und dritten mein Feld?
    Das der Returnwert funktioniert habe ich übrigens so geprüft, das ich den Wert zwischen durch im Serviceprogramm fest vergeben habe.

  4. #4
    Registriert seit
    Oct 2013
    Beiträge
    171
    Hab's mal mit meiner Definition einer Funktion verglichen und da fällt mir auf, dass Du beim CREATE FUNCTION etwas nicht angegeben hast, was ich schon habe: PARAMETER STYLE GENERAL
    Das war nicht unwichtig, erinnere ich mich dunkel. Der Rest ist gleich.

  5. #5
    Registriert seit
    Nov 2010
    Beiträge
    33
    Danke werd ich probieren :-)

Similar Threads

  1. QRY und PARAMeter
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 17-01-08, 10:35
  2. Funktion für Feldeintrag
    By H.V in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 20-09-02, 16:00
  3. Übergabe von Daten HTTP nach RPGLE
    By Bruno Jakob in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 28-02-02, 12:57
  4. Frage zur Formatierung mit Funktion DIGITS in QRY
    By hs in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 14-02-02, 06:30
  5. SQL Funktion " Like"
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-01-02, 16:08

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •