Isikhokelo seNyathelo-nyathelo lokuSebenzisa UKUQALA ... UKUHLAWULA UKUSEBENZA Iimpazamo zeSQL Server

Ukuchonga iimpazamo ngaphandle kokuphazamisa ukusebenza

I-TRY ... I-CATCH isitatimende kwi-Transact- SQL iyabona kwaye ilawula izimo zeepazamo kwizicelo zakho zeenkcukacha. Le nkcazo yinqanaba lembombo leSQL Server kunye neyona nto ibalulekileyo ekuphuhliseni izicelo ezisemgangathweni zesiseko. ZAMA ... I-CATCH isebenza kwi-SQL Server ukususela ngo-2008, iData ye-SQL ye-Azure, i-Azure yeSQL Data Data Warehouse kunye ne-Parallel Data Warehouse.

Ukuzisa i-TRY..CATCH

ZAMA ... I-CATCH isebenza ngokukuvumela ukuba uchaze iingxelo ezimbini zeTransact-SQL: enye ofuna "ukuzama" kunye nomnye ukusebenzisa "ukubamba" naziphi na iimpazamo ezinokuvela. Xa iSQL Server idibana ne-TRY ... I-CATCH isitatimende, senza ngokukhawuleza isitatimenti esifakwe kwisigatshana se-TRY. Ukuba ingxelo ye TRY isebenza ngempumelelo, i-SQL Server iqhubekela phambili. Nangona kunjalo, ukuba isitatimende se-TRY senza impazamo, iSQL Server isebenza isitatimende se-CATCH ukuze sisebenzise kakuhle impazamo.

I-syntax eyisiseko ithatha le fomu:

QALA NGOKWENZA {sql_statement | isitatimende_block} IPHEPHA QAMA UKUQALA ICATCH [{sql_statement | isitatimende_block}] END END CATCH [; ]

ZAMA ... I-CATCH Example

Kulula kakhulu ukuqonda ukusetyenziswa kwesi sitatimende ngokusebenzisa umzekelo. Cinga ukuba ungumlawuli wesiseko seenkcukacha zoluntu esinetafile ebizwa ngokuthi "Abasebenzi," equle ulwazi malunga nomntu ngamnye kumbutho wakho. Le tafile isebenzisa inombolo yenombolo ye-ID yomsebenzi njengento ephambili . Unokuzama ukusebenzisa le ngxelo engezantsi ukufaka umqeshwa omtsha kwisiseko sakho seenkcukacha:

UKUNIKELA KWABASEBENZI (id, igama lokuqala, igama, igama lokugqibela), i-VALUES (12497, 'Mike', 'Chapple', 4201)

Kwiimeko eziqhelekileyo, le nkcazo yayiza kubongeza umgca kwitafile zabasebenzi. Nangona kunjalo, ukuba umqeshwa onobunikazi be-ID 12497 sele sele ekhona kwisiseko sedatha, ukufaka umgca kuya kuphulaphula umqobo oyintloko kunye nokuphumela kule mpazamo elandelayo:

Nksk 2627, iNqanaba 14, iNdawo 1, Umgca we-1 Ulwaphulo lwe-PRIMARY KEY constraint 'PK_employee_id'. Ayikwazi ukufaka ukhiye wokuphinda kwizinto 'dbo.employees'. Ingxelo ipheliswe.

Nangona le mpazamo ikunikezela ngolwazi olufunekayo ukujongana nengxaki, kukho imiba emibini kuyo. Okokuqala, umyalezo u-cryptic. Iquka iikhowudi zamaphutha, amanani omgca kunye nolunye ulwazi olungenakuqondakala kumsebenzisi oqhelekileyo. Okwesibini, kwaye okubaluleke ngakumbi, kubangela ukuba isitatimende siphumeze kwaye senze ukuba isicelo siphume.

Enye indlela ukumboza ingxelo kwingxelo ye-TRY ... I-CATCH, njengoko iboniswe ngezantsi:

QALISA UKUQALA KWABASEBENZI (id, igama lo kuqala, igama lokugqibela, igama lokugqibela), I-VALUES (12497, 'Mike', 'Chapple', 4201) QAPHELA QALA UKUQALA ISICWANGCISO SIPHINTSHA 'Iphutha:' + ERROR_MESSAGE (); I-EXC msdb.dbo.sp_send_dbmail @profile_name = 'I-Mail Employee', @recipients = 'hr@foo.com', @body = 'Kuvele iphutha ekudaleni irekhodi lomqeshwa omtsha.', @subject = 'Iphutha lokuphindaphinda i-ID yomqeshwa'; ISIPHUMO SOKUQALA

Kulo mzekelo, naziphi na iimpazamo ezenzekayo zixelwe kubo bonke abasebenzisa umyalelo kunye ne-hr@foo.com idilesi ye-imeyile. Iphutha eliboniswe kumsebenzisi livela ngezantsi:

Iphutha: Ukuchithwa kwe-PRIMARY KEY constraint 'PK_employee_id'. Ayikwazi ukufaka ukhiye wokuphinda kwizinto 'dbo.employees'. I-imeyile ekhishiwe.

Okubaluleke kakhulu, ukusetyenziswa kwezicelo kuyaqhubeka ngokuqhelekileyo, ukuvumela umprofeti ukuba asebenze kakuhle impazamo. Ukusetyenziswa kwe-TRY ... I-statement ye-CATCH yindlela enhle yokwenza ngokuthe tye nokusingatha iziphene ezenzeka kwizicelo zesiseko seSQL Server.

UkuFunda okungakumbi

Ukuba ufuna ukufunda okungakumbi ngeLwimi loCwangciso oluCwangcisiweyo, funda isingeniso kwi-SQL .