Detalizēti norādījumi par TRY/CATCH izmantošanu SQL servera kļūdu novēršanai
Identificējiet kļūdas, nepārtraucot izpildi
Lerijs Vašbērns / Getty Images
TRY/CATCH priekšraksts programmā Transact-SQL nosaka un apstrādā kļūdu apstākļus datu bāzes lietojumprogrammās. Šis apgalvojums ir stūrakmens SQL Servera kļūdu apstrāde un ir svarīga daļa no stabilu datu bāzes lietojumprogrammu izstrādes.
Funkcija TRY/CATCH attiecas uz SQL Server, sākot ar 2008. gadu, Azure SQL Database, Azure SQL Data Warehouse un Parallel Data Warehouse.
Iepazīstinām ar TRY/CATCH
TRY./CATCH darbojas, norādot divus Transact-SQL priekšrakstus: vienu, kuru vēlaties 'izmēģināt', un otru, lai 'noķertu' visas iespējamās kļūdas. Kad SQL Server saskaras ar TRY/CATCH priekšrakstu, tas nekavējoties izpilda TRY klauzulā ietverto paziņojumu. Ja TRY priekšraksts tiek izpildīts veiksmīgi, SQL Server turpina darbību. Tomēr, ja TRY priekšraksts ģenerē kļūdu, SQL Server izpilda CATCH priekšrakstu, lai graciozi apstrādātu kļūdu.
Pamata sintakse ir šāda:
|_+_|
IZMĒĢINĀT/ĶERĒT Piemērs
Apsveriet cilvēkresursu datubāzi, kurā ir tabula ar nosaukumu darbiniekiem , kurā ir informācija par katru uzņēmuma darbinieku. Šajā tabulā kā primārā atslēga tiek izmantots vesels darbinieka ID numurs.
Varat mēģināt izmantot tālāk norādīto paziņojumu, lai datubāzē ievietotu jaunu darbinieku:
|_+_| |_+_|Šajā piemērā par visām kļūdām tiek ziņots gan lietotājam, kas izpilda komandu, gan e-pasta adresei hr@foo.com. Lietotājam parādītā kļūda ir:
SĀC MĒĢINĀT
INSERT INTO darbinieki (id, vārds, uzvārds, paplašinājums)
VALUES(12497, 'Mike', 'Chapple', 4201)END MĒĢINĀT CATCHPRINT 'KĻŪDA: ' + ERROR_MESSAGE( );EXEC msdb.dbo.sp_send_dbmail@profile_name = 'Darbinieku pasts =o.com@recipients ,@body = 'Radās kļūda, veidojot jaunu darbinieka ierakstu.',@subject = 'Darbinieku datu bāzes kļūda' ;END CATCH
Lietojumprogrammas izpilde turpinās kā parasti, ļaujot programmētājam tikt galā ar kļūdu. TRY/CATCH priekšraksta izmantošana ir elegants veids, kā proaktīvi noteikt un apstrādāt kļūdas, kas rodas SQL Server datu bāzes lietojumprogrammās.
Uzziniet vairāk
Lai uzzinātu vairāk par strukturēto vaicājumu valodu, skatiet mūsu rakstu SQL pamati .