-
SQL UPDATE mit Hostvariablen (Wie geht das?)
Hallo,
vielleicht kann mir jemand von euch weiterhelfen.
Ich hätte eigentlich vor, mir in einem String (siehe unten) das Update-Statement zusammen zu stellen, da sich die WHERE-Bedingung ändern kann. Aber aufgrund der im String enthaltenen Hostvariablen scheint das Ganze nicht zu funktionieren.
Wie kann ich das Update-Statement ausführen?
exec sql execute immediate :sqlstmt; funktioniert nicht.
SQLSTMT = 'UPDATE Datei set Wert1 = :Hostvar1, Wert2 = :Hostvar2 where ....';
Danke für eure
Hilfe!
Joe
-
Hallo,
Du musst die Hostvariablen im String einbinden (alphanumerische Variablen müssen in Hochkomata gesetzt werden):
PHP-Code:
/Free
MySQLStm = 'Update MyTable
Set MyFld1 = ' + HostVar1 + ' +
MyFld2 = ''' + HostVar2 + ''' +
Where ... ';
Exec SQL Execute Immediate MySQLStm;
/End-Free
Birgitta
-
Nun ja, effektiver wenn nicht dynamisch wäre eigentlich:
c/exec sql
c+ UPDATE Datei
c+ set Wert1 = :Hostvar1, Wert2 = :Hostvar2
c+ where key = :mykey
c/end-exec
-
Hallo,
ich werde vorerst die von B.Hauser beschriebene Variante implementieren, allerdings würde mir die direkte Nutzung der Hostvariablen auch besser gefallen.
Kann man dies über das Einbinden der SQLDA ev. lösen?
Wo gibt es dazu gut beschriebene Beispiele?
Danke!
Joe
-
Hallo,
auch das geht, aber meist geht das durchaus ohne, wie sieht denn deine where Klausel aus?
mfg
Dieter Bender
 Zitat von CrazyJoe
Hallo,
ich werde vorerst die von B.Hauser beschriebene Variante implementieren, allerdings würde mir die direkte Nutzung der Hostvariablen auch besser gefallen.
Kann man dies über das Einbinden der SQLDA ev. lösen?
Wo gibt es dazu gut beschriebene Beispiele?
Danke!
Joe
-
Hallo,
nachfolgende SR erzeugt mir jetzt das UPDATE-Statement mit der Where-Klausel.
MfG,
Joe
PHP-Code:
begsr crt_updstmt;
// --- SQL-statement löschen ----------------------------------------------------------- reset sqlstmt; // Update-Statement übernehmen sqlstmt = 'UPDATE Datei set Wert1 = ' + %char(Hostvar1) + ', ' + 'Wert2 = ' + %char(Hostvar2) + ', Wert3 = ' + c_HC + Hostvar3 + c_HC + ', ' + 'Wert4 = ' + %char(Hostvar4);
§where = *off;
// Where-Bedingung an Update anfügen if where1 <> ' ' and where1 <> '***'; if §where = *off; sqlstmt = %trim(sqlstmt) + ' ' + c_where + ' where1 = ' + c_HC + Hostvar5 + c_HC; §where = *on; else; sqlstmt = %trim(sqlstmt) + ' ' + c_and + ' where1 = ' + c_HC + Hostvar5 + c_HC; endif; endif;
if where2 <> 0; if §where = *off; sqlstmt = %trim(sqlstmt) + ' ' + c_where + ' where2 = ' + c_HC + %char(Hostvar6) + c_HC; §where = *on; else; sqlstmt = %trim(sqlstmt) + ' ' + c_and + ' where2 = ' + c_HC + %char(Hostvar6) + c_HC; endif; endif;
//usw,... endsr;
-
Hallo,
wenn das bei dem usw. strukturell genauso weiter geht, dann lässt sich das mit:
update mytable
set myColumn = :myColumn
where
column1 between :low1 and :high1
and column2 between :low2 and :high2
sogar als statisches SQL lösen.
wenn dann eine Bedingung für columnX ausfallen soll, dann besetzt man lowX mit loval und highX mit highval
mfg
Dieter Bender
udate
 Zitat von CrazyJoe
Hallo,
nachfolgende SR erzeugt mir jetzt das UPDATE-Statement mit der Where-Klausel.
MfG,
Joe
PHP-Code:
begsr crt_updstmt;
// --- SQL-statement löschen -----------------------------------------------------------
reset sqlstmt;
// Update-Statement übernehmen
sqlstmt = 'UPDATE Datei set Wert1 = ' + %char(Hostvar1) + ', ' +
'Wert2 = ' + %char(Hostvar2) + ', Wert3 = ' + c_HC +
Hostvar3 + c_HC + ', ' + 'Wert4 = ' + %char(Hostvar4);
§where = *off;
// Where-Bedingung an Update anfügen
if where1 <> ' ' and
where1 <> '***';
if §where = *off;
sqlstmt = %trim(sqlstmt) + ' ' + c_where +
' where1 = ' + c_HC + Hostvar5 + c_HC;
§where = *on;
else;
sqlstmt = %trim(sqlstmt) + ' ' + c_and +
' where1 = ' + c_HC + Hostvar5 + c_HC;
endif;
endif;
if where2 <> 0;
if §where = *off;
sqlstmt = %trim(sqlstmt) + ' ' + c_where +
' where2 = ' + c_HC + %char(Hostvar6) + c_HC;
§where = *on;
else;
sqlstmt = %trim(sqlstmt) + ' ' + c_and +
' where2 = ' + c_HC + %char(Hostvar6) + c_HC;
endif;
endif;
//usw,...
endsr;
-
Hallo,
ich werde den von Hr. Bender angesprochenen Lösungsansatz auch ausprobieren.
Danke für eure Hilfe!
Joe
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 13-07-12, 08:53
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 25-09-06, 08:22
-
By moskito in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 30-08-06, 17:30
-
By wuwu in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 18-07-06, 15:31
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
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