Chotsatira cha Gawo ndi Gawo Kuti Muyese TRY ... ZOKHUDZA ZOTHANDIZA Zowononga SQL Server

Dziwani zolakwa popanda kusokoneza kuphedwa

Ndemanga TRY ... CATCH mu Transact- SQL imadziwa ndikuyendetsa zolakwika m'zolemba zanu. Mawu awa ndi mwala wapangodya wa zolakwika za SQL Server ndipo ndi gawo lofunika kwambiri popanga mapulogalamu ogwira ntchito achinsinsi. TAYERANI ... ZONSE zimagwira ntchito ku SQL Server kuyambira 2008, Azure SQL Database, Azure SQL Data Warehouse ndi Parallel Data Warehouse.

Kuyambira TRY..CATCH

TAYERANI ... ZINTHU zimagwira ntchito mwa kukulolani kuti mufotokoze mau awiri a Transact-SQL: omwe mukufuna "kuyesa" ndi wina kuti agwiritse ntchito "kugwira" zolakwika zilizonse zomwe zingachitike. SQL Server ikakumana ndi TRY ... CATCH ndemanga, imangotulutsa mawu omwe ali m'gwirizano la TRY. Ngati mawu a TRY akugwira bwino, SQL Server ikungopitirirabe. Komabe, ngati mawu a TRY apanga cholakwika, SQL Server imapereka chiganizo cha CATCH kuti chisamalidwe bwino.

Mawu omasuliridwa oyambirira amatenga fomu iyi:

YAMBIRANI TRY {sql_statement | mawu_block} ENDEZA PEZANI KUYAMBIRA CATCH [{sql_statement | mawu_block}] END CATCH [; ]

TAYERANI ... Chitsanzo cha CATCH

Ndizomveka kumvetsa kugwiritsa ntchito mawuwa pogwiritsa ntchito chitsanzo. Tangoganizani kuti ndinu woyang'anira malo ogulitsa anthu omwe ali ndi tebulo lotchedwa "Ogwira ntchito," omwe ali ndi zambiri zokhudza ogwira ntchito omwe ali m'gulu lanu. Gome lomweli limagwiritsa ntchito nambala ya chiwerengero cha ogwira ntchito monga chinsinsi chachikulu . Mungayesere kugwiritsa ntchito mawuwa pansipa kuti muike wothandizira watsopano m'kabokosi lanu:

LINGANI KWA OTHANDIZA (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Muzochitika zachilendo, mawu awa adzawonjezera mzere ku gome la antchito. Komabe, ngati wogwira ntchito ali ndi chidziwitso 12497 akadali kale mu deta, kuika mzere kungalepheretse choyimitsa chinsinsi chachikulu ndikupangitsanso zolakwika zotsatirazi:

Msg 2627, Mndandanda wa 14, Chigawo 1, Mzere 1 Kuphwanyidwa kwa PRIMARY KEY 'PK_employee_id'. Sungathe kuyika fungulo lapadera pa chinthu 'dbo.employees'. Mawuwa achotsedwa.

Ngakhale kuti vuto ili likukupatsani inu chidziwitso chomwe mukufuna kuti muthe kusokoneza vutoli, pali nkhani ziwiri ndizo. Choyamba, uthengawo ndi wovuta. Zimaphatikizapo zikhoso zolakwika, nambala ya mzere ndi zina zomwe simukuzimvetsa kwa osuta. Chachiwiri, komanso chofunika kwambiri, chimachititsa kuti mawuwo abwerere ndipo angapangitse kugwiritsidwa ntchito.

Njira ina ndikulumikiza mawu mu TRY ... CATCH mawu, monga momwe tawonetsera m'munsimu:

YAM'MBUYO YOYENERA KUPITIRA OTHAWIRA (id, choyamba_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) TAYESANI KUYAMBIRA KUSINTHA KUKHALA 'Mphuphu:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Employee Mail', @recipients = 'hr@foo.com', @body = 'Cholakwika chinachitika popanga mbiri yatsopano ya ogwira ntchito.', @subject = 'Kulakwitsa kwa Ogwira Ntchito Kwa Olemba'; PEZANI ZOTSATIRA

Mu chitsanzo ichi, zolakwa zilizonse zomwe zimachitika zimafotokozedwa kwa ogwiritsa ntchito lamulo ndi hr@foo.com e-mail adresse. Cholakwika chowonetsedwa kwa wosuta chikuwonekera pansipa:

Cholakwika: Kuphwanya malamulo a PRIMARY KEY 'PK_employee_id'. Sungathe kuyika fungulo lapadera pa chinthu 'dbo.employees'. Malembo amalembera.

Chofunika kwambiri, kuwonetsa ntchito kumapitirira nthawi zonse, kulola wolemba pulogalamuyo kuti asamalidwe bwino. Kugwiritsidwa ntchito kwa TRY ... ndondomeko ya CATCH ndi njira yabwino yodziwira ndikugwiritsira ntchito zolakwika zomwe zimachitika m'ndondomeko yachinsinsi ya SQL Server.

Kuphunzira zambiri

Ngati mukufuna kuphunzira zambiri za Language Structure Query, werengani Mawu a SQL .