Изјава ТРИ / ЦАТЦХ у Трансацт-СКЛ открива и обрађује услове грешака у апликацијама базе података. Ова изјава је камен темељац СКЛ Руковање грешкама сервера и важан је део развоја робусних апликација база података.
ТРИ / ЦАТЦХ се примењује на СКЛ Сервер почев од 2008, Азуре СКЛ базу података, Азуре СКЛ складиште података и паралелно складиште података.
Представљамо ТРИ / ЦАТЦХ
ТРИ./ЦАТЦХ функционише тако што наводи две Трансацт-СКЛ наредбе: једну коју желите да „испробате“, а другу за „хватање“ свих грешака које могу настати. Када СКЛ Сервер наиђе на ТРИ / ЦАТЦХ израз, он одмах извршава израз укључен у ТРИ клаузулу. Ако се ТРИ израз успешно изврши, СКЛ Сервер наставља даље. Међутим, ако ТРИ израз генерише грешку, СКЛ Сервер извршава ЦАТЦХ израз како би се грешка грациозно обрадила.
Основна синтакса има овај облик:
ПОЧНИТЕ ПОКУШАТИ
{скл_статемент | блок изјаве}
КРАЈНО ПОКУШАЈ
ПОЧИНИТЕ УХВАТ
[{скл_статемент | блок_изјаве}]
ЕНД ЦАТЦХ
[; ]
ПРИМЕРИ / УХВАТИ Пример
Размотримо базу података о људским ресурсима која садржи табелу са именом
запослени, који садржи информације о сваком од запослених у предузећу. Та табела користи целобројни ИД број запосленог као Примарни кључ.Можете покушати да употребите доњу изјаву за уметање новог запосленог у своју базу података:
ИНСЕРТ ИНТО запослених (ид, име, презиме, додатак)
ВРЕДНОСТИ (12497, 'Мике', 'Цхаппле', 4201)
У нормалним околностима, ова изјава би додала ред у табелу запослених. Међутим, ако запосленик са ИД 12497 већ постоји у бази података, уметање реда прекршило би ограничење примарног кључа и резултирало следећом грешком:
Порука 2627, ниво 14, стање 1, ред 1
Кршење ОСНОВНОГ КЉУЧНОГ ограничења 'ПК_емплоиее_ид'. Није могуће уметнути дупликат кључа у објекат 'дбо.емплоиеес'.
Изјава је прекинута.
Иако вам ова грешка пружа информације потребне за решавање проблема, са њом постоје два проблема. Прво, порука је тајна. Садржи шифре грешака, бројеве редова и друге информације које су просечном кориснику неразумљиве. Друго, и што је још важније, доводи до прекида изјаве и може довести до пада система.
Алтернатива је умотавање изјаве у ТРИ... ЦАТЦХ изјаву, као што је овде приказано:
ПОЧНИТЕ ПОКУШАТИ
ИНСЕРТ ИНТО запослених (ид, име, презиме, додатак)
ВРЕДНОСТИ (12497, 'Мике', 'Цхаппле', 4201)
КРАЈНО ПОКУШАЈ
ПОЧИНИТЕ УХВАТ
ПРИНТ 'ЕРРОР:' + ЕРРОР_МЕССАГЕ ();
ЕКСЕЦ мсдб.дбо.сп_сенд_дбмаил
@профиле_наме = 'Маил запосленика',
@реципиентс = 'хр@фоо.цом',
@боди = 'Дошло је до грешке при креирању новог записа запослених.',
@субјецт = 'Грешка базе података запослених';
ЕНД ЦАТЦХ
У овом примеру, све грешке које се појаве пријављују се и кориснику који извршава наредбу и е-адресом хр@фоо.цом. Грешка која се приказује кориснику је:
Грешка: Кршење ОСНОВНОГ ОГРАНИЧЕЊА КЉУЧА 'ПК_емплоиее_ид'.
Није могуће уметнути дупликат кључа у објекат 'дбо.емплоиеес'.
Пошта је на чекању.
Извршавање апликације наставља се нормално, омогућавајући програмеру да обради грешку. Употреба израза ТРИ / ЦАТЦХ елегантан је начин за проактивно откривање и руковање грешкама које се јављају у апликацијама базе података СКЛ Сервер.
Леарнинг Море
Да бисте сазнали више о језику структурираних упита, погледајте наш чланак Основе СКЛ-а.