[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.975

    RPG aus SQL rufen

    moin zusammen,

    wir müssen in einer View für ein InfoPortal Daten zur Verfügung stellen, die wir erst errechnen müssen.

    Das Portal will per
    ... select * from view where Feld = WERT
    zugreifen

    Ich dachte mir, im SQL kann ich ja eine Procedur aufrufen und diese könnte dann das RPG Pgm rufen.
    Das schreibt Daten in eine WK-File die dann Bestandteil der View sind.

    Alternativ könnte ich versuchen über die REGINF Pgmme den zugriff ab zu fangen und das Pgm zu rufen.
    Damit habe ich bisher nicht 'in Produktion' gearbeitet.
    Außerdem ist der Zugriff 'unbestimmt' (ODBC / JDBC / wie auch immer) und
    wird vermutlich auch ein, zwei mal wechseln, bis es endgültig ist.

    Kann mit jemand einen Link oder ein Beispiel benennen für die erste Lösung?
    Wie bekomme ich den WERT in die Procedur, wie ist die Syntax für den RPG aufruf?
    oder hat jemand eine bessere Idee?
    Ein HTTPS Request soll es nicht werden!

    Danke
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Du solltest das auf jeden Fall mit einer Kombination aus SQL-Prozedur und (wenn SQL da nicht ausreicht) mit einem zusätzliche ILERPG als Programm, oder besser Service-Modul erstellen.
    Beispiele dazu findest du im SQL-Programmierhandbuch auch für ILERPG.

    Nur durch SQL-Prozeduren hast du überhaupt Returnparameter, so dass dann ein SQL per

    call MyProcedure(InputP1, InputP2, OutputP1, OutputP2)

    möglich wird.
    Im Select lassen sich allerdings nur Funktionen mit genau einem Returnwert erstellen.
    Benötigts du mehr, ist dann eine Table-Function erforderlich, die du dann per Select einbinden kannst.
    Allerdings sollten hier dann keine Where-Klauseln Verwendung finden.
    Vorteil:
    Es können Parameter übergeben werden und ILERPG kann ein Resultset aus einer DS mit DIM(n) Elementen zurückgeben. Die Anzahl wird im SQL-Return festgelegt.
    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
    Aug 2001
    Beiträge
    2.873
    Stored Procedures werden mit CALL aufgerufen und können somit nicht direkt in einem SQL-Statement hinterlegt werden.
    Was Du brauchst ist eine SQL-Funktion, and die Du die Parameter übergibst und die Dir genau einen Wert zurückgibt. Innerhalb der Funktion rufst Du dann Dein RPG-Programm, das Du als Stored Procedure registriert hast auf.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Berechtigungen

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