602SQL-Úplná dokumentace Index  

Získání kontextu chyby CDK komponent

Podrobnější informace o kontextu chyby (vysvětlení viz popis funkce Get_server_error_context) lze získat nastavením vlastnosti ContextLevel třídy ESQL602Exception. Vlastnost ContextType pak indikuje aktuální typ kontextu, vlastnost ContextName vrací textový ekvivalent typu kontextu, hlášení odpovídající aktuální hladině kontextu vrací vlastnost ConText. Celý kontext chyby je možné dostat tak, že v cyklu počínaje nulou inkrementujeme hodnotu ContextLevel a čteme jednotlivé vlastnosti kontextu (např. TableNO, TableName, RecNO) dokud ContextType nevrátí EKT_NO.

EKT_NO (0)Konec - další hladina kontextu není
EKT_TABLE (1)Tabulka
TableNameobsahuje jméno tabulky, na které došlo k chybě
TableNOobsahuje číslo tabulky
RecNOobsahuje číslo záznamu
ColumnNameobsahuje jméno sloupce
ColumnNOobsahuje číslo sloupce
MultiIndexobsahuje číslo -1
EKT_INDEX (2)Index
TableNameobsahuje jméno tabulky, na které došlo k chybě
TableNOobsahuje číslo tabulky
IndexNameobsahuje jméno indexu
IndexNOobsahuje číslo indexu
EKT_PROCEDURE (3)Procedura
ProcNameobsahuje jméno uložené procedury, která vyvolala chybu
ProcNOobsahuje číslo uložené procedury nebo -1 pro lokálně deklarovanou proceduru
EKT_TRIGGER (4)Trigger
TriggerNameobsahuje jméno triggeru, který vyvolal chybu
TriggerNOobsahuje číslo triggeru
EKT_SQLSTMT (5)SQL příkaz
InvalidStatementobsahuje SQL příkaz nebo část SQL příkazu, na kterém došlo k chybě
EKT_LOCK (6)Zámek
LockTextobsahuje jméno typu zámku, který se nepodařilo umístit
LockTypeobsahuje číslo typu zámku, který se nepodařilo umístit (zámek pro čtení = 128, zámek pro přepis = 64, dočasný zámek (do skončení transakce) pro přepis = 32, dočasný zámek pro čtení = 16)
LUserNameobsahuje jméno uživatele, jehož zámek blokuje umístění tohoto zámku
LUserNOobsahuje číslo uživatele, jehož zámek blokuje umístění tohoto zámku
EKT_COMP (7)Překlad
InvalidStatementobsahuje SQL příkaz nebo část SQL příkazu, na kterém došlo k chybě
EKT_RECORD (8)Záznam
TableNameobsahuje jméno tabulky, na které došlo k chybě
TableNOobsahuje číslo tabulky
InvalidRecordobsahuje seznam hodnot sloupců v záznamu ve formátu: SLOUPEC1=Hodnota1, SLOUPEC2 =Hodnota2, ...
EKT_KEY (9)Index
DuplKeyValueobsahuje textovou reprezentaci hodnoty klíče, která vyvolala chybu

Příklad:

try
    SQL602Statement.Execute;
except
    on E : ESQL602Exception do begin       
        E.ContextLevel := 0;
        while E.ContextType <> EKT_NO do begin
            ShowMessage(E.ConText);
            E.ContextLevel := E.ContextLevel + 1;
        end;
    end;
end;