Պարզեք սխալները `առանց ընդհատելու կատարումը
The TRY ... CATCH- ի հայտարարությունը Transact- SQL- ում հայտնաբերում եւ կարգավորում է ձեր բազայի ծրագրերի սխալների պայմանները: Այս հայտարարությունը հանդիսանում է SQL Server- ի սխալի բեռնաթափման հիմնարար եւ հանդիսանում է ամուր տվյալների բազայի ծրագրերի մշակման կարեւոր բաղադրիչ: TRY ... CATCH- ն կիրառվում է SQL Server- ից 2008 թվականից, Azure SQL Database- ի, Azure SQL Data Warehouse- ի եւ Parallel Data Warehouse- ի:
Ներկայացնելով TRY..CATCH- ը
TRY ... CATCH- ը աշխատում է `թույլ տալով ընդգրկել երկու Transact-SQL հայտարարությունները` մեկը, որը ցանկանում եք «փորձել» եւ մյուսը օգտագործել «բռնել» ցանկացած սխալների, որոնք կարող են առաջանալ: Երբ SQL Server- ը հանդիպում է TRY ... CATCH- ի հայտարարության մեջ, այն անմիջապես կատարում է TRY- ի դրույթում ընդգրկված հայտարարությունը: Եթե TRY- ի հայտարարությունը հաջողությամբ կատարում է, SQL Server- ը պարզապես շարժվում է: Սակայն, եթե TRY- ի հայտարարությունը առաջացնում է սխալ, SQL Server- ը կատարում է CATCH- ի հայտարարությունը նրբանկատորեն կարգավորել սխալը:
Հիմնական տեքստը տանում է այս ձեւը.
BEGIN TRY {sql_statement | statement_block} END ԹՈՂԱՑՆԵԼ ՍԿՍԵԼ [{sql_statement | statement_block}] END CATCH [; []TRY ... CATCH Օրինակ
Դժվար է հասկանալ այս հայտարարության օգտագործումը `օրինակ օգտագործելով: Պատկերացրեք, որ դուք «Մարդկային ռեսուրսների տվյալների բազայի» կառավարիչ եք, որը պարունակում է «Աշխատակիցներ» աղյուսակը, որը պարունակում է տեղեկություններ ձեր կազմակերպության աշխատակիցների մասին: Այդ աղյուսակը օգտագործում է ամբողջ թվով աշխատողի ID համարը որպես առաջնային բանալին : Կարող եք փորձել ստորեւ բերված հայտարարությունը օգտագործել ձեր տվյալների բազայում նոր աշխատակից ներգրավելու համար.
INSERT INTO- ի աշխատակիցները (id, first_name, last_name, extension) VALUES (12497, 'Մայք', 'Chapple', 4201)Նորմալ հանգամանքներում, այս հայտարարությունը կարող է ավելացնել աշխատակիցների աղյուսակը: Այնուամենայնիվ, եթե տվյալների բազայում արդեն գոյություն ունեն ID 12497 աշխատող, տողը տեղադրելու համար խախտում է առաջնային հիմնական խոչընդոտը եւ հանգեցնում է հետեւյալ սխալին.
Msg 2627, Level 14, State 1, Line 1 PRIMARY KEY- ի սահմանափակումների խախտում 'PK_employee_id': Հնարավոր չէ կրկնօրինակ բանալ այն «dbo.employees» - ում: Հայտարարությունը դադարեցվել է: Թեեւ այս սխալը ձեզ տալիս է այն խնդիրը, որն անհրաժեշտ է խնդրի լուծման համար, կան երկու խնդիր: Նախ, հաղորդագրությունը գաղտնի է: Այն ներառում է սխալի կոդեր, գծերի համարներ եւ միջին օգտագործողի համար անհասկանալի այլ տեղեկություններ: Երկրորդը, եւ ավելի կարեւոր է, այն ստիպում է հայտարարությունը չեղյալ հայտարարել եւ կարող է առաջացնել հայտի վթարի:
Այլընտրանքն այն է, որ հայտարարությունը կպցնելով TRY- ում ... CATCH- ի հայտարարությունը, ինչպես ցույց է տրված ստորեւ:
Այս օրինակում, որ տեղի է ունենում ցանկացած սխալ, հաղորդում է հրամանը կատարող օգտագործողը եւ hr@foo.com էլ.փոստի հասցեն: Ստորեւ ներկայացվում է օգտվողին ցուցադրվող սխալը.
Սխալ. PRIMARY KEY- ի սահմանափակումների խախտում 'PK_employee_id': Հնարավոր չէ կրկնօրինակ բանալ այն «dbo.employees» - ում: Փոստը հերթ էր տվել:Ամենակարեւորը, կիրառման կատարումը շարունակվում է նորմալ, թույլ տալով, որ ծրագրավորողը նրբանկատորեն կկիրառի սխալը: Օգտագործեք TRY- ից ... CATCH հայտարարությունը այն էլեգանտ ձեւն է, որն առաջացնում է կանխարգելում եւ կարգավորում SQL Server տվյալների բազայի ծրագրերում կատարվող սխալները:
Ուսուցման ավելին
Եթե ցանկանում եք ավելին իմանալ Structured Query Language- ի մասին, կարդացեք Introduction to SQL- ը :