P°φklad trasovßnφ chyb a zjiÜ¥ovßnφ informacφ o chyb∞

V nφ₧e uvedenΘm p°φkladu programu ve vnit°nφm jazyce se vytvo°φ tabulka ATAB s integritnφm omezenφm TESTA. Definuje se log MYLOG, do n∞ho₧ se majφ zaznamenßvat u₧ivatelskΘ chyby, provßd∞nΘ SQL p°φkazy a vklßdßnφ zßznam∙ do tabulky ATAB. Prvnφ p°φkaz INSERT prob∞hne sprßvn∞, v druhΘm je poruÜeno integritnφ omezenφ.

var error_text:string[200];
    suppl:string[31];
    level, kont_type, par1, par2, par3, par4 : integer;
begin
  #sql CREATE TABLE ATAB (A INTEGER, CONSTRAINT TESTA CHECK (Odd(a)));
  #sql CALL _sqp_define_log('MYLOG', '', '');
  #sql CALL _sqp_trace(TRACE_USER_ERROR, '', '', 'MYLOG', 3);
  #sql CALL _sqp_trace(TRACE_SQL,        '', '', 'MYLOG', 3);
  #sql CALL _sqp_trace(TRACE_INSERT, '', 'ATAB', 'MYLOG', 3);
  #sql INSERT INTO ATAB VALUES(1);
  #sql INSERT INTO ATAB VALUES(2);
  Get_error_num_text(Sz_error, error_text, 200);
  Get_server_error_suppl(suppl);
  level:=0;
  repeat
    Get_server_error_context(level, kont_type, par1, par2, par3, par4);
    level:=level+1;
  until kont_type=0;
#sql DROP TABLE ATAB
end.

Po provedenφ tohoto programu jsou v souboru MYLOG.TXT tyto zßpisy:

22.9. 18:02 S ANONYMOUS Provßdφm SQL p°φkaz [SQL: call _sqp_trace(TRACE_INSERT, '', 'ATAB', 'MYLOG', 3);]
22.9. 18:02 S ANONYMOUS Provßdφm SQL p°φkaz [SQL: INSERT INTO ATAB VALUES(1);]
22.9. 18:02 i ANONYMOUS Vklßdßm zßznam[Inserting to table 98 (ATAB), record 0] [SQL: INSERT INTO ATAB VALUES(1);]
22.9. 18:02 S ANONYMOUS Provßdφm SQL p°φkaz [SQL: INSERT INTO ATAB VALUES(2);]
22.9. 18:02 i ANONYMOUS Vklßdßm zßznam[Inserting to table 98 (ATAB), record 1] [SQL: INSERT INTO ATAB VALUES(2);]
22.9. 18:02 E ANONYMOUS PoruÜeno integritnφ omezenφ TESTA databßzovΘ tabulky[ table 98 (ATAB), record 1]
22.9. 18:05 S ANONYMOUS Provßdφm SQL p°φkaz [SQL: DROP TABLE ATAB]

Funkce Get_error_num_text vrßtφ °et∞zec:

PoruÜeno integritnφ omezenφ TESTA databßzovΘ tabulky

Funkce Get_server_error_suppl vrßtφ °et∞zec

TESTA

Funkce Get_server_error_context pro level=0 vrßtφ typ kontextu 1 (tabulka), v par1 je Φφslo tabulky a v par2 Φφslo zßznamu.

Funkce Get_server_error_context pro level=0 vrßtφ typ kontextu 0 (konec kontextu).

Viz