PDA

View Full Version : SQLSTATE 55019



woy
24-02-15, 15:31
Hallo miteinander

Ich bekomme In einem Cobol-Pgm bei einem Delete den Status 55019 mit dem Code 7008 zurück.

Definition Curser:

EXEC SQL
DECLARE VMKPF112 CURSOR WITH HOLD FOR
SELECT
CTNOBEF, CTNOAFT, CONROL
FROM VMKPF112
WHERE CTNOBEF = :SQL-CTNO AND
CTNOAFT = :SQL-CTNO-AFT AND
CONROL = :SQL-CONROL
FOR UPDATE
END-EXEC.

Programmablauf:

EXEC SQL OPEN VMKPF112 END-EXEC

EXEC SQL FETCH VMKPF112 INTO
:SQL-CTNO, :SQL-CTNO-AFT, :SQL-CONROL
END-EXEC

à liefert korrekte Daten

EXEC SQL DELETE FROM VMKPF112
WHERE :SQL-CTNO = CTNOBEF AND
:SQL-CTNO-AFT = CTNOAFT AND
:SQL-CONROL = CONROL
à liefert SQLSTATE = 55019 / SQL CODE 7008 (auch ohne WHERE CLausel probiert mit gleichem Ergebnis) : 55019 The table is in an invalid state for the operation. -7008

Fuerchau
24-02-15, 15:34
Die Zieltabelle wird nicht journalisiert.
Ohne spezielle Angabe wird aber ein Journal gefordert damit man Commit (bestätigen) oder Rollback (zurückdrehen) durchführen kann.

Füge vor der ersten SQL-Anweisung (in Working Storage) ein:

exec SQL set Option commit=*None
end-exec.

Fuerchau
24-02-15, 15:35
Nachtrag:
Ohne Where-Klausel löscht du die ganze Tabelle!
Stell dir vor das hätte geklappt.

woy
24-02-15, 15:50
Danke, ist bereits wieder umgestellt. Hatte Deinen emaligen Beitrag dazu gefunden und mit der Option Commiz=*none umgewandelt und siehe da, es hat funktioniert,