-
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.
-
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
-
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.
-
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.
-
@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
-
Das hört sich ja nicht schlecht an. Leider kann ich den Link zur dynamischen Berechnung nicht aufrufen.
-
 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
-
Das dort angegebene Beispiel entspricht dem, was ich bereits als Alternative programmiert habe. Dann geht es halt nicht anders.
Trotzdem vielen Dank !
Similar Threads
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 18-06-06, 12:14
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks