PDA

View Full Version : Abfragen ob Delete(SQL) erfolgreich war



Dominic K.
01-02-18, 09:26
Hallo :),

wie kann ich abfragen ob ein Delete mittels SQL in einem RPG Programm erfolgreich war?

Viele Grüße
Dominic

Fuerchau
01-02-18, 09:33
SQLCODE = 0 => alles OK
SQLCODE = 100 => Zeile nicht gefunden

In der SQLDA (ich glaube SQLERD3, o.ä.) seht dann sogar die Anzahl Sätze.

Dominic K.
01-02-18, 09:40
Ah ok also wie bei einem select oder insert einfach den sqlcode/sqlstatus abfragen - perfekt :)
Danke dir !

malzusrex
01-02-18, 10:09
Es müsste auch mit
Exec SQL Get Diagnostics :Anzahl_Saetze = ROW_COUNT;
gehen.
In der Variable Anzahl_Saetze steht dann halt die Anzahl Sätze drin, welche gelöscht worden sind

Gruß
Ronald

B.Hauser
01-02-18, 10:34
In der SQLDA (ich glaube SQLERD3, o.ä.) seht dann sogar die Anzahl Sätze.

SQLCA (Communications Area) und NICHT SQLDA (Descriptor Area)
Außerdem heißt das Sub-Field in der SQLCA SQLER3 oder SQLERR(D3)

Birgitta

Fuerchau
01-02-18, 14:57
@Birgitta: Danke für die Korrektur.

Warum auf Diagnostik zusätzliche Abfragen machen wenn ich schon alles im Speicher habe?

malzusrex
01-02-18, 15:16
Warum auf Diagnostik zusätzliche Abfragen machen wenn ich schon alles im Speicher habe?

Weil mich an eingen STellen schon interesiert, wieviele Sätze gelöscht/eingefügt worden sind.
Oder steht das auch in der SQLCA?

Fuerchau
01-02-18, 15:30
Genau:
SQLER3 enthält manchmal sogar die Anzahl zu erwartenden Sätze eines Selects.
Ansonsten immer das Ergebnis auch einer Mehrfachoperation (Delete, Update, Insert..Select).
Teilweise können auch Ergbnisse der letzten Aktion eines Prozeduraufrufes verfügbar sein.
Übrigens bereits seit V2R1, als ich mit SQL für DB2 angefangen habe.

Wichtig z.B. bei Delete/Update wenn ich nur 1 Satz erwartet habe und es dann doch mehr geworden sind kann ich im Falle der Aufzeichnung noch schnell einen Rollback machen;-).

malzusrex
01-02-18, 15:35
OKay.
Ich habe bisher immer nur
DoW sqlcod >= 0 and sqlcod <= 100
abgefragt, bzw
If sqlcod <> 0;
Leave;
EndIf;

... Das kommt davon, wenn man mal Beispiele nur übernommen hat und sich nicht mit dem "Rest" beschäftigt...
Gruß
Ronald