Идентификувајте ги грешките без да го прекинувате извршувањето
Извештајот TRY ... CATCH во Transact- SQL ги открива и обработува условите за грешка во апликациите за базата на податоци. Оваа изјава е камен-темелник на SQL Server грешката и е важен дел од развојот на робустен апликација за бази на податоци. TRY ... CATCH се однесува на SQL Server, почнувајќи од 2008 година, Azure SQL база на податоци, Azure SQL складиште на податоци и паралелно складиште на податоци.
Воведување TRY..CATCH
TRY ... CATCH работи со тоа што ви овозможува да наведете две извештаи од Transact-SQL: оној што сакате да го "пробате", а друг да го користи за "фаќање" било какви грешки што можат да се појават. Кога SQL Server се соочува со TRY ... CATCH изјава, таа веднаш ја извршува изјавата вклучена во клаузулата TRY. Ако изјавата TRY успешно се извршува, SQL Server едноставно се вклучува. Меѓутоа, ако изјавата TRY генерира грешка, SQL Server извршува изјава CATCH за да ги обработува грешките.
Основната синтакса ја зема оваа форма:
BEGIN TRY {sql_statement | statement_block} END TRY НАЧИНА НА ВЛЕЗОТ [{sql_statement | statement_block}] END CATCH [; ]ИСПИТУВАЊЕ ... CATCH Пример
Најлесно е да се разбере употребата на оваа изјава преку употреба на пример. Замислете дека сте администратор на база на човечки ресурси која содржи табела наречена "Вработени", која содржи информации за секој од вработените во вашата организација. Таа табела користи примарен клуч за број на вработен. Може да се обидете да ја користите изјавата подолу за да внесете нов вработен во вашата база на податоци:
INSERT INTO employees (id, first_name, last_name, extension) ВРЕДНОСТИ (12497, 'Мајк', 'Chapple', 4201)Под нормални околности, оваа изјава ќе додаде ред на табелата "Вработени". Меѓутоа, ако работникот со ID 12497 веќе постои во базата на податоци, вметнувањето на редот би го прекршило ограничувањето на основниот клуч и ќе резултира со следнава грешка:
Msg 2627, Ниво 14, Член 1, Линија 1 Прекршување на PRIMARY KEY ограничување 'PK_employee_id'. Не може да внесе дупликат клуч во објектот 'dbo.employees'. Изјавата е прекината. Додека оваа грешка ви ги обезбедува информациите што ви се потребни за да го смените проблемот, постојат две проблеми со неа. Прво, пораката е криптична. Тука спаѓаат кодови за грешки, броеви на линии и други информации што не се разбираат за просечниот корисник. Второ, и уште поважно, тоа предизвикува изјавата да прекине и може да предизвика паѓање на апликацијата.
Алтернативата е да ја заврши изјавата во изјава TRY ... CATCH, како што е прикажано подолу:
Во овој пример, сите грешки што се случуваат се пријавуваат и на корисникот кој ја извршува командата и на адресата e-mail hr@foo.com. Погрешната прикажана на корисникот се појавува подолу:
Грешка: Прекршување на PRIMARY KEY ограничување 'PK_employee_id'. Не може да внесе дупликат клуч во објектот 'dbo.employees'. Поштата чека во ред.Што е најважно, извршувањето на апликацијата продолжува нормално, овозможувајќи им на програмерот благодатно да се справи со грешката. Употреба на TRY ... изјавата CATCH е елегантен начин за проактивно откривање и обработка на грешки кои се појавуваат во апликациите на SQL Server база на податоци.
Учење повеќе
Ако сакате да дознаете повеќе за структурираниот јазик за пребарување, прочитајте Вовед во SQL .