-
Eingebettetes SQL im RPG
Hallo,
ich arbeite grad an einem RPG Programm das mit SQL-Cursorn arbeitet.
Nun bin ich an den Punkt gekommen, wo ich bei der Cursordeklaration einen substring-Befehl anwenden will, mit dynamischen Positionsnummer.
z.b.
select * from A where subst(feldA, os1, os2) = 'XXX'
Diese dynamische Positionsnummern "pos1" und "pos2" fliegen mir aber bei der Compilierung um die Ohren. Egal ob ich die Werte als nummerische Felder definiere oder als Alphanummerische Felder.
Geht das gar nicht biem Substr? oder mach ich was falsch?
-
pos1 und pos2 müssen zum Zeitpunkt des Prepare bekannt sein => das geht mit statischem SQL nicht, sondern nur mit dynamischem SQL, da kann man zur Laufzeit den Prepare machen.
D*B
 Zitat von Souljumper
Hallo,
ich arbeite grad an einem RPG Programm das mit SQL-Cursorn arbeitet.
Nun bin ich an den Punkt gekommen, wo ich bei der Cursordeklaration einen substring-Befehl anwenden will, mit dynamischen Positionsnummer.
z.b.
select * from A where subst(feldA,  os1,  os2) = 'XXX'
Diese dynamische Positionsnummern "pos1" und "pos2" fliegen mir aber bei der Compilierung um die Ohren. Egal ob ich die Werte als nummerische Felder definiere oder als Alphanummerische Felder.
Geht das gar nicht biem Substr? oder mach ich was falsch?
-
wie geht dynamisches sql unter rpg?
wie müsste da so ein declare mit aufruf aussehen.
dynamisches sql kenn ich bisher nur von oracle, habs aber unter db2 und rpg nie verwendet.
ein kurzes syntaxbeispiel oder so wäre fein?
-
... da sollte es hier im Forum schon Beispiele geben - und wenn man sich die Mühe des suchens ersparen will, gibt es immer noch das FM...
D*B
 Zitat von Souljumper
wie geht dynamisches sql unter rpg?
wie müsste da so ein declare mit aufruf aussehen.
dynamisches sql kenn ich bisher nur von oracle, habs aber unter db2 und rpg nie verwendet.
ein kurzes syntaxbeispiel oder so wäre fein?
-
Hallo,
mit welchem Release arbeitest DU?
Ich habe gerade unter V5R4 ein Mini-Programm mit embedded SQL Cursor und Substring mit Host-Variablen in den Where-Bedinungen erstellt. Die Ausführung läuft ebenfalls problemlos.
PHP-Code:
D BegPos S 5I 0
D Len S 5I 0
D Text S 50A
/Free
BegPos = 3;
Len = 5;
Exec SQL Declare CsrC01 Cursor For
Select Name1F From MYTABLE
Where Substr(Name, :BegPos, :Len) = 'ABCDE';
Exec SQL Open CsrC01;
Dsply SQLCOD;
Exec SQL Fetch Next From CsrC01 into :Text;
Dsply SQLCOD;
Dsply Text;
Exec SQL Close CsrC01;
*INLR = *ON;
/End-Free
... übrigens in SQL heißt die scalare Funktion SUBSTR (und nicht SUBST, das ist RPG!)
Birgitta
-
hab hier v5r1
mit free rpg arbeiten wir gar nicht, nur rpg 4.
muss ich beim dynamischen sql jedesmal den prepare und declare ausführen bevor ich einen open mache?
Mein programm wird nämlich von einem asy-job aufgerufen und bin mir jetzt nicht sicher warum ich andauernd die fehlercodes 514 kriege.
-
Das funktioniert mit klassischem RPG genauso.
Es funktioniert sogar mit RPGIII.
Hast Du mal versucht SUBSTR statt SUBST zu scheiben.
Beim dynamischen SQL wird der SQL-Befehl zur Laufzeit zusammengepfriemelt und dann in einen ausführbaren SQL-Befehl (geschieht beim PREPARE) konvertiert.
Deshalb: Prepare, Declare, Open ist immer erforderlich. Es sei den das gleiche SQL statement wird mehrfach ausgeführt, dann genügt ein OPEN.
Birgitta
-
hm
hab mr jetzt mal ein minimal beispiel gebastelt, das funktioniert nur wenn ich in der reihenfolge
declare, prepare, open vorgehe
ich finde ein beispiel für prepare, declare, open auch auf den ibm seiten, aber die funktionieren bei mir nicht....
sqlcode 440 oder 514 sind da die regelmäßigen antworten.
-
das problem scheint mein substringbefehl zu sein.
sobald ich in meinem vorbereiteten statement string ein
substr(feld1, 1, ?) = ?
einbaue, schlägt der prepare fehl.
ist die syntax bei substr anders?
-
er kann es nicht, aus welchen gründen auch immer.
stmnt = 'substr(feld1, 1, ' + %trim(len) + ') = ?'
funktioniert -.-*
Similar Threads
-
By homue in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-07-07, 16:47
-
By muadeep in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-06, 13:25
-
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 Zupfl50 in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 06-10-04, 21:04
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