Корак по корак Коришћење ТРИ ... ЦАТЦХ-а за руковање грешкама СКЛ Сервера

Идентификујте грешке без прекида извршења

ТРИ ... ЦАТЦХ изјава у Трансацт- СКЛ детектује и обрађује услове грешке у вашим апликацијама базе података. Ова изјава је камен темељац за руковање грешкама СКЛ Сервера и важан је дио развоја робусних апликација базе података. ТРИ ... ЦАТЦХ се примењује на СКЛ Сервер почевши од 2008. године, Азуре СКЛ база података, Азуре СКЛ складиште података и Паралелно складиште података.

Представљамо ТРИ..ЦАТЦХ

ТРИ ... ЦАТЦХ ради тако што вам дозвољава да наведете две Трансацт-СКЛ изразе: оне које желите "пробати", а други да користе "да ухвате" све грешке које се могу појавити. Када се СКЛ Сервер сусретне са ТРИ ... ЦАТЦХ изразом, одмах извршава изјаву укључену у ТРИ клаузулу. Ако се ТРИ изјава успешно изврши, СКЛ Сервер се једноставно укључује. Међутим, ако изјава ТРИ генерише грешку, СКЛ Сервер извршава наредбу ЦАТЦХ да грациозно обради грешку.

Основна синтакса узима овај облик:

БЕГИН ТРИ {скл_статемент | изјава_блок} ЕНД ТРИ БЕГИН ЦАТЦХ [{скл_статемент | статемент_блоцк}] ЕНД ЦАТЦХ [; ]

ТРИ ... Пример ЦАТЦХ

Најлакше је разумети употребу ове изјаве кроз употребу примера. Замислите да сте администратор базе података о људским ресурсима који садржи таблицу под називом "Запослени" која садржи информације о сваком од запослених у вашој организацији. Та табела користи целобројни идентификациони број запослених као примарни кључ . Можда ћете покушати да користите изјаву испод како бисте унели новог запосленог у своју базу података:

ИНСЕРТ ИНТО запослених (ид, фирст_наме, ласт_наме, ектенсион) ВАЛУЕС (12497, 'Мике', 'Цхаппле', 4201)

Под нормалним околностима, ова изјава ће додати ред табелу запослених. Међутим, ако запосленик са ИД 12497 већ постоји у бази података, убацивањем редова би се прекрсило ограничење примарног кључа и резултирало сљедећом грешком:

Мсг 2627, Ниво 14, Стање 1, Прекршење линије 1 ПРИМАРИ КЕИ ограничења 'ПК_емплоиее_ид'. Не могу да убацим дупликат у објекат 'дбо.емплоиеес'. Изјава је прекинута.

Док вам ова грешка пружа информације које вам требају да решите проблем, постоје две проблеме са њим. Прво, порука је криптична. То укључује кодове грешака, бројеве линија и друге информације неразумљиве просечном кориснику. Друго, и што је још важније, узрокује да се изјава прекида и може проузроковати срушење апликације.

Алтернатива је промена израза у ТРИ ... ЦАТЦХ изразу, као што је приказано у наставку:

БЕГИН ТРИ ИНСЕРТ ИНТО запослени (ид, фирст_наме, ласт_наме, ектенсион) ВАЛУЕС (12497, 'Мике', 'Цхаппле', 4201) ЕНД ТРИ БЕГИН ЦАТЦХ ПРИНТ 'Грешка:' + ЕРРОР_МЕССАГЕ (); ЕКСЕЦ мсдб.дбо.сп_сенд_дбмаил @профиле_наме = 'Емплоиее Маил', @реципиентс = 'хр@фоо.цом', @боди = 'Дошло је до грешке приликом стварања новог рекорда запосленог.', @субјецт = 'Грешка код дуплирања ИД запослених'; ЕНД ЦАТЦХ

У овом примеру, грешке које се јављају пријављују се и кориснику који извршава команду и хр@фоо.цом е-маил адреси. Грешка приказана кориснику се појављује испод:

Грешка: кршење ПРИМАРИ КЕИ ограничења 'ПК_емплоиее_ид'. Не могу да убацим дупликат у објекат 'дбо.емплоиеес'. Маил стави у ред.

Најважније, извршење апликација се наставља нормално, омогућавајући програмеру да грациозно рукује грешком. Коришћење ТРИ ... израза ЦАТЦХ је елегантан начин проактивно откривање и руковање грешкама које се јављају у апликацијама СКЛ Сервер базе података.

Учите више

Ако желите сазнати више о структурираном језику упита, прочитајте Увод у СКЛ .