Używanie funkcji błędów w zagnieżdżonej konstrukcji TRY...CATCH
Do twojego sklepu dotarły nowe rowery elektryczne – trzeba zaktualizować stan magazynowy.
Chcesz zarejestrować, że otrzymano 2 rowery Trek Powerfly 5 - 2018 w cenie 3499,99 USD każdy oraz 3 rowery New Power K- 2018 w cenie 1999,99 USD każdy.
Próbujesz wstawić produkty do bazy danych, sądząc, że to nowe modele. Okazuje się jednak, że pierwszy z nich jest już w magazynie. Na szczęście tabela products ma ograniczenie wymagające unikalności nazwy każdego produktu.
Przygotowujesz skrypt kontrolujący ewentualne błędy podczas wstawiania danych. Chcesz też zapisywać napotkane błędy w tabeli errors, a jeśli samo zapisanie błędu się nie powiedzie – wyświetlić numer błędu i jego treść.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w SQL Server
Instrukcje do ćwiczenia
- Otocz obsługę błędu blokiem
CATCH. - Wstaw wartość
'Error inserting a product'do tabelierrorsi otocz tę operację dodatkowym blokiemTRY. - Otocz zagnieżdżoną obsługę błędu kolejnym blokiem
CATCH. - W wewnętrznym bloku
CATCHpobierz numer wiersza błędu oraz treść komunikatu o błędzie.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES ('Trek Powerfly 5 - 2018', 2, 3499.99),
('New Power K- 2018', 3, 1999.99)
END TRY
-- Set up the outer CATCH block
___ ___
SELECT 'An error occurred inserting the product!';
-- Set up the inner TRY block
___ ___
-- Insert the error
INSERT INTO ___
VALUES ('Error inserting a product');
___ ___
-- Set up the inner CATCH block
___ ___
-- Show number and message error
SELECT
___ AS line,
___ AS message;
___ ___
___ ___