[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Hallo Birgitta,
    vielen Dank für die klare Antwort. Es ist leider nicht das erste Mal, dass ChatGPT "halluziniert". Aber manchmal sind die Tipps der KI ganz gut.

    Liebe Grüße,
    Dieter

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich verwende für sowas grundsätzlich den sog. SQL-Style.
    Der hat den Vorteil, dass es zu jedem Parameter und/oder Returnwert auch einen NULL-Anzeiger gibt.
    Damit kann man a) Null-Werte behandeln, b) NULL zurückgeben.

    Wenn man nicht immer alle Parameter benötigt, kann man mit sog. Überladungen dieselbe Prozedur mit verschiedenen Parametern definieren.
    Wobei die Überladungen nur einen SQL-Body benötigen, der die eigentliche UDF mit Defaults, eben NULL, für die fehlenden Parameter aufruft.

    Das macht SQL dann erst so richtig flexibel.

    Parameter an die Prozedur werden grundsätzlich per Referenz übergeben (CONST ändert das nicht und VALUE ist für SQL nicht erlaubt).
    SQL (und auch RPGLE) generiert für nicht passende Parameter sowieso neue Felder. Wenn du also eine Konstante in In/Out übergibst, bekommst du ganz normal deine Input-Variable, nur wenn du da was reinschreibst, ist es halt weg.
    Out Parameter müssen als Felder angegeben werden.

    ChatGPT hat in so weit recht, wenn Überladungen von Prozeduren erstellt werden, was anscheinend vorausgesetzt wurde;-).
    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 2020
    Beiträge
    418
    Es gibt eine einfache Grundregel:
    Bei SQL Funktionen wird der Rückgabewert über den RETURN gemacht.
    Bei SQL Prozeduren wird der Rückgabewert über die Parameter (mit IN, OUT und INOUT) gesteuert.
    SQL Table Function liefern beim RETURN halt eine Tabelle zurück.

    Das was du also willst ist eher eine SQL Prozedur.
    Du könntest auch eine SQL Prozedur erstellen, um den Wert aus dem Parameter zu erhalten.
    Und dann noch eine SQL Funktion schreiben, in der du die SQL Prozedur aufrufst und dann mit RETURN den zurückgelieferten Wert der SQL Prozedur, zurückgeben:
    SQL Funktion --> SQL Prozedur --> RPG Prozedur

    lg Andreas

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Vielen Dank für eure Infos.

    Mit ist klar, wie es mit SQL-Procedures und Table-Functions geht. Mein Problem war, dass ich ein fertiges RPGLE-Serviceprogramm habe, was bereits im Einsatz ist. Dieses fertige Programm möchte ich gerne in einer SQL-UDF nutzen. Und da war ich mir unsicher, was mit dem In/Out-Parameter passiert, wenn RPG da irgendwas reinschreibt. Wenn der Wert einfach verworfen wird (davon gehe ich aufgrund der Posts mal aus), ist das für mich OK.

    LG, Dieter

Similar Threads

  1. Serviceprogramm und SQL-Command „get diagnostics“
    By opeker in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 21-10-15, 12:42
  2. User Defined Function in SQL, Datumsübergabe an Serviceprogramm
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 27
    Letzter Beitrag: 02-12-14, 09:33
  3. Variable als Parameter für SUBSTR in SQL-Anweisung (UDF)
    By hartmuth in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 24-07-14, 10:52
  4. SQL Funktion ruft Serviceprogramm auf - Parameter übergabe
    By loisl in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-11-13, 16:37
  5. UDF mit ServiceProgramm und *null-parameter
    By roko in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 19-08-09, 06:08

Berechtigungen

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