[NEWSboard IBMi Forum]
Seite 3 von 3 Erste ... 2 3
  1. #25
    Registriert seit
    Jan 2012
    Beiträge
    1.162
    Zitat Zitat von BenderD Beitrag anzeigen
    ...
    PS: Ob ich allerdings strategisch auf die morsche Bohle IWS setzen würde - was machst Du eigentlich, wenn IBM den schlachtet?
    Berechtigte Frage.
    Zunächst gehe ich davon aus, dass wir das mit etwas Vorlaufzeit mitbekommen werden. Wir hätten dann genug Zeit, eine Schicht (wahrscheinlich in Java) zu bauen (nicht ich, sondern unsere Java-Developer), die das IWS ersetzt. Mit Springboot ist das auch kein Hexenwerk.

    Wir hatten auch schon Kontakt mit Andreas (Prouza). Er hatte da Ideen, so eine Schicht auch in Python oder ähnlichen Sprachen zu bauen.

    Ich denke, da gibt es mehrere Möglichkeiten.

  2. #26
    Registriert seit
    Nov 2020
    Beiträge
    359
    Hast du auch den nächsten Satz gelesen?

    Zitat Zitat von Andreas_Prouza Beitrag anzeigen
    Die SQL Prozedur kannst du dann trotzdem in einer SQL Funktion einbauen, wenn es wirklich für den IWS nötig ist.
    Ich bilde mir aber ein, dass du die Zuordnung der Parameter von SQL Prozeduren genauso gut machen kannst, wie beim Result von SQL Funktionen.
    Bin mir aber nicht mehr sicher, da (wie du weißt) ich auch kein Freund vom IWS bin und für WebAPIs, Python auf der i verwende um genau alle diese Probleme nicht mehr zu haben.

    Falls das mit den Parametern aber nicht so funktioniert, dann wie beschrieben die SQL Funktion als Wrapper.

  3. #27
    Registriert seit
    Jan 2012
    Beiträge
    1.162
    Zitat Zitat von Andreas_Prouza Beitrag anzeigen
    Hast du auch den nächsten Satz gelesen?

    ...
    Falls das mit den Parametern aber nicht so funktioniert, dann wie beschrieben die SQL Funktion als Wrapper.
    Genau das finde ich nicht gut. Dann hätte ich eine Funktion und eine Procedure.

    Ich bin hier anscheinend nicht der Meinung der meisten Foristen:

    Ihr meint, eine Funktion wäre nur zum Lesen und eine Procedure nur zum Schreiben. Der Sinn erschließt sich mir (und meinen Kollegen) nicht. Ich bin auch noch nie bewusst auf so eine Beschreibung gestoßen.

    Um ehrlich zu sein, habe ich mich allerdings schon des Öfteren gefragt, wofür Procedures eigentlich gut sind. Es geht doch alles so schön mit Funktionen!

    Ich dachte, Procedures sind dafür da, irgendwelche Resultset-Rückgaben zu machen. Das setzen wir bislang nicht ein.

    Ansonsten betrachten wir Funktionen und Procedures als ziemlich gleichrangig.

  4. #28
    Registriert seit
    Nov 2020
    Beiträge
    359
    Ich sehe es auch differenzierter als die Meisten.

    Klar, eine Funktion die z.B. eine Zahl in ein Datum umwandelt, soll keine Commit-Steuerung benötigen.
    Ich sehe aber auch kein Problem wenn eine Funktion für mehr verwendet wird.
    Wichtig ist nur, dass es entsprechend Definiert wird.

    Eine Funktion deren Name "TRANSFER_DATA_2_IFS" heißt, wird hoffentlich in keiner WHERE Bedingung eingebaut.

    Funktionen verwende ich, wenn ich lediglich einen Rückgabewerte erwarte und ich diese in SQL Statements verwenden möchte.
    Prozeduren verwende ich, wenn ich über die Parameter mehrere Rückgabewerte benötige.

    Wenn es aber aus technischer Sicht im IWS einfacher ist SQL Funktionen zu verwenden, warum soll man sich dann ein Beinbruch machen und komplexe Strukturen erschaffen, damit man am ende des Tages einen Heldentod sterben kann.

    Wartbarkeit & Sinnhaftigkeit steht über Religion.

  5. #29
    Registriert seit
    Jan 2012
    Beiträge
    1.162
    Danke, Andreas.

    Aber bevor hier irgendwo ein Herzklabaster ausgelöst wird , nochmal zur Klarstellung:

    Wir haben viele SQL-Funktionen, aber die meisten lesen in der Tat nur Daten. Da wir im RPG fast nur noch Serviceprogramme schreiben, haben wir viele external Functions, die einfach nur Adapter für SQL-Serviceprogramme sind.

    Die wenigen Funktionen, die wirklich Daten verändern, sind im Team in der Regel bekannt und sind so benannt, dass es da keine Zweifel beim Aufruf geben sollte.

  6. #30
    Registriert seit
    Feb 2001
    Beiträge
    20.360
    Im IWS könntest du ja auch folgendes machen:

    select * from final table (insert into .....);

    D.h, der Insert wird ausgeführt und anschließend wird das Ergebnis wieder gelesen.
    Wenn du nun einen Insert-Before-Trigger startest, kann dieser den BLOB/CLOB auswerten und mit den, rudimentären, JSON-Parse-Funktionen den LOB auswerten, der dir i.Ü. als LOB-LOcator übergeben wird.
    Über Erfolg/Nicht-Erfolg kannst du dann Felder des Before-Buffers anpassen bevor sie in den DB geschrieben werden.
    Das Ergebnis wird vom Select wieder gelesen, ggf. in JSON überführt und zurückgesendet.

    Sowas ähnliches habe ich schon mal für eine Kardek-Lagersteuerung gebaut.
    Die Lager-Software hat einfach per JDBC auf die IBM i zugeggriffen und per Before-Trigger habe ich die RPGLE-Aktivitäten druchgeführt und den Status in den Insert-Buffer geschrieben.
    Dies klappt auch mit Update o.ä.
    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

Similar Threads

  1. 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
  2. RPGLE an einer Transaktion teilnehmen lassen?
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 24-02-11, 08:37
  3. Erstellen einer UDF mit UNION
    By e_sichert in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 09-05-08, 13:25
  4. Probleme mit dem Aufruf einer UDF
    By e_sichert in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 08-05-08, 09:35
  5. SQL0332 beim SQL-Aufruf einer UDF(Java)
    By Ewald in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 24-01-07, 14:38

Berechtigungen

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