[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2005
    Beiträge
    6

    embedded SQL / dynamische SET-Anweisung

    Mit SQL läßt sich, wie in diesem Beispiel ...

    /end-free
    C/EXEC SQL
    C+ set :Erg = 0
    C/END-EXEC
    /free

    einer internen Variablen ein Wert zuweisen. Gibt es die Möglichkeit, diese Anweisung dynamisch zusammenzustellen, wie in dem nachfolgendem nicht funktionierenden Beispiel angedeutet:

    MySql = 'set :Erg = 0';

    /end-free
    C/EXEC SQL
    C+ PREPARE MYSQL FROM :MYSQL
    C/END-EXEC
    C/EXEC SQL
    C+ execute MySQL
    C/END-EXEC
    /free

    Mit der Select-Anweisung läßt sich ähnliches realisieren, aber das wäre nicht besonders performant.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Dynamische Set-Anweisungen werden nicht unterstützt!

    Warum initialisierst Du Deine Host-Variablen eigentlich nicht direkt?

    Ansonsten ist eine Prepare und anschließende Execute-Anweisung (oder eine EXECUTE IMMEDIATE-Anweisung) auch nicht besonders performant, da die Syntax-Prüfung zur Laufzeit erfolgen muss.

    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Feb 2005
    Beiträge
    6
    Es geht geht mir nicht um das Initialisieren von Variablen. Es steckt schon ein wenig mehr hinter meiner Frage. So möchte ich gern Formeln in einer Tabelle ablegen, die von den Anwendern/Programmierern gepflegt werden können (Rabattstaffeln, Preiskalkulationen etc.). Definierte Platzhalter werden dann durch interne Variablen ersetzt. Als Ergebnis wird dann ein numerischer Wert (Preis, Menge) zurückgegeben. Wenn es funktionieren würde, könnte ich meine Programme sehr flexibel darauf aufbauen.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann musst du daraus dynamische Funktionen erstellen, die du dann statisch aufrufst:

    create function myfunc ...
    set :myvar = myfunc
    drop function myfunc

    Performant ist das sicherlich nicht.
    RPG/LE ist eben für dynamische Formeln nicht so geeignet.

    Aber mit dem Select ist das doch gar nicht so schlecht.
    Du benötigst halt nur eine Datei mit genau einem Satz.
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    @Stannek

    Die einzige Möglichkeit wie man so etwas machen kann ist hier beschrieben:
    Ausführen von in alphanumerischen Strings gespeicherten Rechenoperationen

    Du packst die einzelnen Statements in eine RPG-Funktion.
    Dann knuddelst Du in dem rufenden Programm Deine Formel zusammen und übergibst sie an die Funktion.

    Beispiel:
    PHP-Code:
    /Free
       Formel 
    = %Char(MyFeld1) + ' * (' + %Char(MyFld2) + ' + ' + %Char(MyFld3) + ') / ' + %Char(MyFld4);
       
    Ergebnis DynBerechnung(Formel);
    /
    End-Free 
    Birgitta
    Birgitta Hauser

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

  6. #6
    Registriert seit
    Feb 2005
    Beiträge
    6
    Das hört sich ja nicht schlecht an. Leider kann ich den Link zur dynamischen Berechnung nicht aufrufen.

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Stannek
    Das hört sich ja nicht schlecht an. Leider kann ich den Link zur dynamischen Berechnung nicht aufrufen.
    Der Link müsste jetzt funktionnieren!
    Ausführen von in alphanumerischen Strings gespeicherten Rechenoperationen

    Birgitta
    Birgitta Hauser

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

  8. #8
    Registriert seit
    Feb 2005
    Beiträge
    6
    Das dort angegebene Beispiel entspricht dem, was ich bereits als Alternative programmiert habe. Dann geht es halt nicht anders.

    Trotzdem vielen Dank !

Similar Threads

  1. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 12:01
  2. RPG mit Embedded SQL, JOIN ..
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-06-06, 12:14
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. Character verbinden in Embedded SQL
    By e_sichert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-05-06, 10:47
  5. Dynamische Sortierung Embedded SQL
    By NEich in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-12-05, 14:50

Berechtigungen

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