Tataiso ea Mehato ea Mehato ea Mehato ea ho Hlahloba TRY ... Litsela tsa Sesole sa SQL Server sa SETHO

Khetholla liphoso ntle le ho sitisa ho bolaoa

Letšoao la TRY ... la CATCH ho Transact- SQL le lemoha le ho sebetsana le maemo a phoso ka mekhoa ea hau ea marang-rang. Polelo ena ke lejoe la sekhutlo la SQL Server le phoso e sebetsanang le phoso 'me ke karolo ea bohlokoa ea ho ntshetsa pele lik'homphieutha tse matla. Leka ... CATCH e sebetsa ho SQL Server ho qala ka 2008, Azure SQL Database, Azure SQL Data Warehouse le Parallel Data Warehouse.

Ho hlahisa TRY..CATCH

Leka ... CATCH e sebetsa ka ho lumella hore u hlahise lipolelo tse peli tsa Transact-SQL: tseo u batlang ho "leka" le tse ling ho li sebelisa ho "tšoara" liphoso leha e le life tse ka 'nang tsa hlaha. Ha SQL Server e kopana le tekete ea TRY ... CATCH, e potlakela ho hlahisa polelo e kenyelletsoeng sechabeng sa TRY. Haeba polelo ea TRY e sebetsa ka katleho, SQL Server e tsoelapele feela. Leha ho le joalo, haeba polelo ea TRY e hlahisa phoso, SQL Server e phetha polelo ea CATCH ho sebetsana ka phoso le phoso.

Mantsoe a motheo a mantsoe a qalang a nka mokhoa ona:

Qala QALANG {sql_statement | statement_lock} QETELA LEKA HO QALA CATCH [{sql_statement | statement_lock}] FIN CATCH [; ]

LEKA ... Mohlala oa CATCH

Ho bonolo ho utloisisa tšebeliso ea polelo ena ka ho sebelisa mohlala. Ak'u inahanele hore u mookameli oa lits'ebeletso tsa basebetsi tse nang le tafole e bitsoang "Basebetsi," e nang le tlhahisoleseding e mabapi le e mong le e mong oa basebetsi mokhatlong oa hau. Tafole eo e sebelisa nomoro e kholo ea ID ea mosebetsi e le senotlolo se ka sehloohong . U ka 'na ua leka ho sebelisa polelo e ka tlase ho kenya mosebeletsi e mocha kahare ea hau:

KENA HO basebeletsi (id, pele_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Tlas'a maemo a tloaelehileng, polelo ena e ne e tla eketsa tafole tafoleng ea Basebetsi. Leha ho le joalo, haeba mosebeletsi ea nang le ID 12497 a se a ntse a le teng ka lebenkeleng, ho kenya mola ho tlōla molao-motheo o ka sehloohong le ho etsa phoso e latelang:

Msg 2627, Level 14, State 1, Line 1 Tlhekefetso ea lithibelo tsa PRYARY KEY 'PK_employee_id'. Ha e khone ho kenya senotlolo sechabeng ka 'dbo.employees' ntho. Polelo e felisitsoe.

Le hoja phoso ena e fana ka boitsebiso boo u bo hlokang ho rarolla bothata, ho na le lintlha tse peli le eona. Ntlha ea pele, molaetsa ke oa bohlokoa. E kenyelletsa melao ea phoso, linomoro tsa line le lintlha tse ling tse sa utloisisoang ho basebelisi ba tloaelehileng. Ea bobeli, le ho bohlokoa ho feta, e etsa hore polelo e tlosoe 'me e ka baka ts'ebetso ea kopo.

Ntho e 'ngoe ke ho koahela polelo ka polelo ea TRY ... CATCH, joalokaha ho bontšitsoe ka tlaase:

Qala QETELA HO KENA HO basebeletsi (id, pele_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) QETELA LEKA HO QETHA KHETHA 'Phoso:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Employee Mail', @recipients = 'hr@foo.com', @body = 'Phoso e etsahetse ho theha mohala oa basebetsi ba mocha.', @subject = 'Phoso ea ho iketsetsa lebitso la basebetsi'; QETELA HO QETHA

Mohlala ona, liphoso leha e le life tse etsahalang li tlalehoa ho bohle ba sebelisang taelo le aterese ea e-mail ea hr@foo.com. Phoso e bontšitsoeng ho mosebedisi e hlaha ka tlase:

Phoso: Tlhekefetso ea constraint ea PRIMARY KEY 'PK_employee_id'. Ha e khone ho kenya senotlolo sechabeng ka 'dbo.employees' ntho. Leqhoa la mela.

Habohlokoa ka ho fetisisa, ts'ebetsong ea ts'ebetso e ntse e tsoela pele ka tloaelo, e lumella sesebelisi ho sebetsana ka phoso le phoso. Tšebeliso ea TRY ... polelo ea CATCH ke mokhoa o hlollang oa ho lemoha le ho sebetsana le liphoso tse hlahang likarolong tsa basebetsi ba SQL Server.

Ho ithuta ho eketsehileng

Haeba u batla ho ithuta ho eketsehileng ka Puo ea Sebopeho e Hlophisitsoeng, bala Sengoli sa SQL .