Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Otocz obsługę błędu blokiem CATCH.
  • Wstaw wartość 'Error inserting a product' do tabeli errors i otocz tę operację dodatkowym blokiem TRY.
  • Otocz zagnieżdżoną obsługę błędu kolejnym blokiem CATCH.
  • W wewnętrznym bloku CATCH pobierz 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; 
    ___ ___    
___ ___
Edytuj i uruchom kod