Anmelden

View Full Version : SQLRPGLE kein Update nach Umstellung auf V7R1



Seiten : [1] 2

lucullus
07-02-13, 07:26
Moin, moin,

nach der der Umstellung von V6R1 auf V7R1 zeigen sich Probleme mit einigen SQLRPGLE-Programmen. Schreiben funktioniert nach wie vor, aber beim Update -> passiert nichts, auch keine Fehlermeldung.

Hier der Code:

C/EXEC SQL
c+ update DFERBUN
c+ set dfstat = :erstat, dflock = :erlock,
c+ dffa = :erfa,
c+ dfkto = :##kton, dfname = :p0ktbz,
c+ dfktkr = :erktkr, dfbr = :erbr,
c+ dferdm = :ererdm, dfsh = :ersh,
c+ dfefeu = :erefeu, dfwg = :erwg,
c+ dfkurs = :erkurs, dfefku = :erefku,
c+ dfwgeh = :erwgeh, dflern = :erlern,
c+ dfsb = :$$sb, dfeukz = :ereukz,
c+ dfeunr = :ereunr, dfift1 = :erift1,
c+ dfift2 = :erift2, dfaeus = :eraeus,
c+ dfaews = :eraews, dfaetm = :eraetm,
c+ dfbust = :erbust, dfbunr = :erbunr,
c+ dfjp = :erjp,
c+ dfzbd = :erzbd, dfnetg = :ernetg,
c+ dfvltg = :ervltg, dfskp1 = :erskp1,
c+ dfskt1 = :erskt1, dfskp2 = :erskp2,
c+ dfskt2 = :erskt2, dfskp3 = :erskp3,
c+ dfskt3 = :erskt3, dfesrn = :eresrn,
c+ dfbgts = :erbgts, dfbgt1 = :erbgt1,
c+ dfbgt2 = :erbgt2, dfbdm = :erbdm,
c+ dfbsh = :erbsh, dfefeb = :erefeb,
c+ dfbuwg = :erbuwg, dfbuks = :erbuks,
c+ dfbuku = :erbuku, dfbueh = :erbueh,
c+ dfscc = :erscc, dfhk = :erhk,
c+ dfpljp = :erpljp, dfsusd = :ersusd,
c+ dfkoz = :erkoz, dfersl = :erersl,
c+ dferst = :ererst, dfefsk = :erefsk,
c+ dfbsl = :erbsl, dfbst = :erbst, dffill = :erfill,
c+ dfbgjt = :##bgjt, dfefjt = :##efjt, dfaejt = :##aejt,
c+ dffljt = :##fljt, dfvljt = :##vljt, dffujt = :##fujt,
c+ dfskj1 = :##skj1, dfskj2 = :##skj2, dfskj3 = :##skj3
c+ where dfbgnr = :erbgnr
C/END-EXEC
Wenn ich das Programm im Debug, SQL-Ausgabeansicht, laufen lasse, werden alle Felder korrekt gefüllt angezeigt! Es erscheint keine Fehlermeldung, aber das Update hat nicht stattgefunden.

Mit DSPJOBLOG bekomme ich folgendes zusehen:

2 > call ndms995r '000079700232369'
ODP wiederverwendet.
ODP nicht gelöscht.
Eingebettetes SELECT beendet.
ODP wiederverwendet.
ODP nicht gelöscht.
Wert für Spalte oder Variable DFNAME zu lang. Aktuell fällt mir nu nichts mehr ein.

Vielleicht hat ja jemand noch eine Idee wo ich ansetzen kann! Danke!!


Gruß

Andreas

KM
07-02-13, 07:31
Hallo,

wie sieht's mit Commit-Steuerung aus?

Gruß,
KM

Fuerchau
07-02-13, 07:45
" Wert für Spalte oder Variable DFNAME zu lang" ist eine eindeutige Fehlermeldung!
Du bekommst sicherlich einen negtiven SQLCOD.

Scheinbar ist die Prüfung auf korrekte Werte in V7R1 verschärft worden.
Vergleiche die Definition von DFNAME mit dem Inhalt von p0ktbz.

Dschainers
07-02-13, 09:27
chgcmddft cmd(crtsqlrpgi) newdft('commit(*NONE)')

lucullus
07-02-13, 09:35
Moin, moin,

den (Fehler)hinweis gabs schon immer; hatte aber keine negativen Auswirkungen.:D

Ich werde die Programme ändern und dann kurzes Statement geben.

Danke für den Hinweis!

Andreas

Fuerchau
07-02-13, 09:44
Vielleicht gibts da ja eine Option zum automatischen abschneiden (kenne ich allerdings nicht).
Die andere Variante ist ggf. die, dass das Abschneiden von Leerzeichen ja nur als Warnung ausgegeben wird, da dies unkritisch ist (außer bei VARLEN-Feldern).
Aber vielleicht ist die nun zu speichernde Information nun auch nach dem Abschneiden der Leerzeichen immer noch zu lang.

B.Hauser
07-02-13, 09:46
Mich würde trotz allem der SQLCODE nach dem Update interessieren. Dann könnte man genaueres zu der Ursache sagen.

Birgitta

B.Hauser
07-02-13, 09:48
chgcmddft cmd(crtsqlrpgi) newdft('commit(*NONE)')

Das kann auch nur derjenige machen, der a. die richtige Berechtigung hat und b. Herr auf der Maschine ist.

Meine Kunden würden mir was husten, wenn ich einen System-Befehl ändern würde.

Besser ist es auf alle Fälle (zumindest wenn ohne Commit gearbeitet wird) in alle Quellen ein entsprechendes SET OPTION-Statement einzubinden.

Dann braucht man sich auch nach einem Release-Wechsel keinen Kopf mehr darum zu machen.

Birgitta

Dschainers
07-02-13, 09:53
Das kann auch nur derjenige machen, der a. die richtige Berechtigung hat und b. Herr auf der Maschine ist.

Meine Kunden würden mir was husten, wenn ich einen System-Befehl ändern würde.

Besser ist es auf alle Fälle (zumindest wenn ohne Commit gearbeitet wird) in alle Quellen ein entsprechendes SET OPTION-Statement einzubinden.

Dann braucht man sich auch nach einem Release-Wechsel keinen Kopf mehr darum zu machen.

Birgitta


War ja nur ein Hinweis, wie man das dann umsetzt, bleibt ja jedem selber überlassen

Obv
07-02-13, 12:07
leerzeichen abschneiden sollte kein problem sein und auch keine fehlermeldung hervorrufen.
Die Fehlermeldung klingt eher als wäre der tatsächliche Inhalt zu lang!
Das Update wird dann auch nicht ausgeführt

eine lösung:

dfname = substr (:p0ktbz, 1, length (dfname))

commit sollte natürlich auf *NONE sein :rolleyes: