Tilmaameyaal Tallaabo-tallaabo ah oo loogu talagalay CADDHAMKA ... CATCH si ay u la socoto qaladka SQL Server

Aqoonsiga khaladaadka adoon joojin fulinta

Kombiyuutarka ... Qodobbada CATCH ee Transact- SQL waxay ogaanayaan oo ay qabtaan shuruudaha qaladka ee codsiyadaada database. Bayaankani waa aasaaska hoose ee maareynta qaladka ee SQL Server iyo waa qayb muhiim ah oo ka mid ah samaynta codsiyada xogta adag. Diiwaangelinta ... CATCH waxay codsanaysaa SQL Server laga bilaabo 2008, Azure SQL Database, Azure SQL Data Warehouse iyo Warehouse Data Warehouse.

Soo bandhigida TRY..CATCH

Dumarka ... CATCH waxay u shaqeeyaa adiga oo kuu oggolaanaya inaad sheegto labo deymood oo Transact-SQL: mid aad rabto inaad "isku daydo" iyo mid kale oo aad u isticmaasho in ay "qabato" khaladaad kasta oo dhici karta. Marka SQL Server la kulmayo dakhliyo ... Bayaanka Qodobka CATCH, isla markiiba wuxuu fuliyaa qoraalka ku xusan qadarka TRY. Haddii qoraalka rasmiga ah ee Tv-ga uu si guul leh u fuliyo, SQL Server wuxuu si fudud u dhaqaaqaa. Si kastaba ha noqotee, haddii caddaynta TRY ay keento qalad, SQL Server wuxuu fuliyaa qoraalka CATCH si xariif ah u xakameynaya qaladka.

Qormada asaasiga ahi waxay qaadataa foomkan:

HADDII DIBADDA {sql_statement | statement_block} XADGUDUB KU SAABSAN XARUNTA [{sql_statement | statement_block}] QAYBTA DHAMMAAN; ]

DIB ... CADCH Tusaale

Waa sahlan tahay in la fahmo isticmaalka qoraalkaan iyada oo la adeegsanayo tusaale. Ka dhig inaad tahay maamulaha xogta ilaha macluumaadka aadanaha oo ay ku jiraan miis magac lagu magacaabo "Employees", oo ay ku jiraan macluumaadka ku saabsan shaqaale kasta oo ka tirsan ururkaaga. Miiskani wuxuu isticmaalaa lambarka aqoonsiga shaqaalaha ee ugu hooseeya ee muhiimka ah . Waxaad isku dayi kartaa inaad isticmaasho qoraalka hoos ku qoran si aad u geliso shaqaale cusub oo ku jira xogtaada:

INSERT INTO shaqaale (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Xaaladaha caadiga ah, bayaankani wuxuu ku darayaa miiska shaqaalaha miiska. Si kastaba ha noqotee, haddii shaqaale leh ID 12497 ay horey u jirtey diiwaanka, galinta safka ayaa jabin doonta caqabadda ugu muhiimsan ee aasaasiga ah waxayna keeneysaa qaladka soo socda:

Msg 2627, Heerka 14, Gobolka 1, Laynka 1 Xadgudubka "PRIMARY key pause" 'PK_employee_id'. Ma gali karaan furaha muhiimka ah ee shayga 'dbo.employees'. Qoraalka ayaa la joojiyay.

Inkastoo qaladkan uu ku siinayo macluumaadka aad u baahan tahay si loo xalliyo dhibaatada, waxaa jira laba arrimood oo la socda. Marka hore, farriinta waa cryptic. Waxaa ka mid ah codsiyada khaladaadka, lambarrada xarumaha iyo macluumaadka kale ee aan la garan karin ee celceliska isticmaalaha. Marka labaad, iyo wax ka sii muhiimsan, waxay keeneysaa in qoraalka la joojiyo oo uu keeni karo shil dalab.

Beddelka ayaa ah in lagu duubo bayaannada kudhowaad DIB ... Warbixinta CATCH, sida hoos ku tusay:

KALA DUWAN INTERT INTERTO shaqaale (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) DHAMMAAN SHARCIYADA 'DHISKA "+ ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Shaqaale Shaqaale', @recipients = 'hr@foo.com', @body = 'Khalad ayaa ka dhacay abuurista diiwaan cusub oo shaqaale ah.', @subject = 'Xaqiijinta Aqoonsiga Shaqaalaha'; END CATCH

Tusaalahan, khaladaad kasta oo dhacaya waxaa loo soo gudbiyaa labada isticmaale ee fulinta amarka iyo cinwaanka e-mailka hr@foo.com. Qaladka loo soo bandhigay user ayaa ka muuqda hoos:

Xaqiiqda: Xadgudubka xayiraadda "PRK" keystraction 'PK_employee_id'. Ma gali karaan furaha muhiimka ah ee shayga 'dbo.employees'. Xaashid ayaa laguu diray.

Tan ugu muhiimsan, fulinta codsigu waxay sii socotaa si caadi ah, u oggolaanaya barnaamijka inuu si xushmad leh u xakameeyo qaladka. Isticmaalka DXB ... caddaynta CATCH waa hab qarsoodi ah si loola socodsiiyo loona xakameeyo khaladaadka ku dhaca codsiyada xogta SQL Server.

Waxbarashada More

Haddii aad rabto inaad waxbadan ka barato Luuqadda Qaabdhismeedka Qaabdhismeedka, akhri Hordhaca SQL .