ʻO ka papa kuhikuhi Step-by-StepUihana TRY ... CATCH e hāpai i nā Haʻawewele Haʻuki SQL

E hōʻoia i nā hewa me ka pāpāʻole i ka hana

ʻO ka TRY ... CATCH kaʻike i loko o Transact- SQL eʻike a hana i nā kūlana hewa i kāu mauʻikepili pūnaewele. ʻO kēia'ōlelo ke kumu kihi o ka lawelaweʻana i ka hala SQL Server a he mea nui ia o ka hoʻomohalaʻana i nā mea hoʻohana i kaʻikepili koʻikoʻi. TRY ... CATCH pili i ka SQL Server e hoʻomaka ana me 2008, Database SQL Database, Azure SQL Data Warehouse, a me ke KeʻenaʻIkeʻIkeʻIke.

Ke hoʻokomo nei i TRY..CATCH

TRY ... CATCH e hana ana ma kaʻaeʻana iāʻoe e wehewehe i nā hua'ōlelo Transact-SQL: hoʻokahi āu makemake e "ho'āʻo" aʻo kekahi e hoʻohana i ka "hopu" i nā hewa e hiki ke ala mai. I ka manawa e loaʻa ai i ka SQL Server mau hulina a TRY ... CATCH'ōlelo, hoʻopau koke ia i ka'ōlelo i loko o ka māhele TRY. Ināʻike ka'ōlelo TRY i ka holomua, e neʻe wale anaʻo SQL Server. Eia naʻe, ināʻike ka'ōlelo TRY i kahi hewa, hoʻohana ka SQL Server i ka'ōlelo CATCH e mālama pono i ka hemahema.

ʻO ke kuʻina hui maʻamau kēia palapala:

BEGIN TRY {sql_statement | 'ōlelo i kaukauwehe} END TRY BEGIN CATCH [Sql_statement | 'ōlelo i ka helu_block}] END CATCH [; ]

TRY ... CATCH Hōʻailona

E maʻalahi ka hoʻomaopopoʻana i ka hoʻohanaʻana i kēia'ōlelo ma o ka hoʻohanaʻana i kahi hiʻohiʻona. E noʻonoʻoʻoeʻoʻoe ke luna hoʻomalu o kahi waihona'ikewaiwaiwai kanaka i loaʻa kahi papa i kapaʻiaʻo "nā limahana," e loaʻa ai nāʻike e pili ana i kēlā me kēia kanaka o kāu hui. E hoʻohanaʻia ana e kēlā papaʻaina kahi helu helu helu helu kanaka pilikino e like me ka helu kumu . Hiki iāʻoe ke ho'āʻo e hoʻohana i ka'ōlelo ma lalo nei e hoʻokomo i kekahi limahana hou i kāuʻikepili:

Kākauʻia i loko o nā mea hoʻohana (id, inoa mua, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Ma lalo o nā kūlana kūikawā, e hōʻano hou kēia'ōlelo i kahi lālani i ka papahana Hana. Eia naʻe, inā i loaʻa kahi mea hana me ID 12497 i loko o ka waihonaʻikepili, hoʻokomo i ka lalani e hōʻeha i ka ulia kī nui a me ka hopena i kēia hemahema:

Msg 2627, Papa 14, Moku'āina 1, Line 1 Hoʻohahaʻia o PRIMARY KEY kāohi 'PK_employee_id'. ʻAʻole hiki ke hoʻokomo i ka kī pālua ma ka 'dbo.emploies' '. Ua hoʻopauʻia ka'ōlelo.

ʻOiaiʻo kēia hemahema e hāʻawi iāʻoe i kaʻike āu e pono ai e hoʻopilikia i ka pilikia,ʻelua mau hihia me ia. ʻO ka mea mua, he cryptic ka leka. Loaʻa i nā helu kuhi, nā hua laina a me nāʻike'ē aʻe iʻikeʻoleʻia i ka mea hoʻohana maʻamau. ʻO ka lua, aʻo ka mea nui aku,ʻo ia ke kumu e hōʻea ai ka'ōlelo a hiki ke hoʻoneʻe i kahi noi.

ʻO ka kohoʻana,ʻo ia ke kāpili i ka'ōlelo i loko o kahi'ōlelo TRY ... CATCH, e like me ia i hōʻikeʻia i lalo nei:

BEGIN TRY INSERT IN users (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) END KEKAHI I KA'ĀKAHI'ĀINA CATCH'ĀKA: '+ ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mea hoʻohana Mail', @recipients = 'hr@foo.com', @body = 'Ua hewa ka hanaʻana i kahi moʻoleloʻoihana hou.', @subject = 'Hapa hewa Duplication'Aihana'; END CATCH

Ma kēiaʻano, nā hewa i hanaʻia e hōʻikeʻia i ka mea hoʻohana e hoʻokō nei i ke kauoha a me ka helu uila hr@foo.com. Uaʻikeʻia ka hewa i hōʻikeʻia i ka mea hoʻohana:

Ka hapa: hōʻinoʻia o PRIMARY KEY constraint 'PK_employee_id'. ʻAʻole hiki ke hoʻokomo i ka kī pālua ma ka 'dbo.emploies' '. Mail i hoʻouka.

ʻO ka mea nui loa, ke hoʻomauʻia nei ka hana hoʻopihapiha, e'āpono ana i ka mea hoʻolima e mālama pono i ka hewa. Hoʻohana o ka TRY ...ʻO CATCH kaʻikepili he ala maʻalahi loa eʻike a mālama i nā hemahema e loaʻa ana i nā polokalamu noinaehoʻikepili SQL Server.

E aʻo hou

Inā makemakeʻoe e aʻo hou e pili ana i ka Language Query Structured, e heluhelu i ka Introduction to SQL .