開始使用免費開始

在巢狀 TRY...CATCH 中使用錯誤函式

你剛收到一批新的電動腳踏車進到你的店裡,所以需要更新庫存。

你想登記:收到 2 台「Trek Powerfly 5 - 2018」,每台價格 $3499.99;以及 3 台「New Power K- 2018」,每台 $1999.99。

你嘗試把這些產品插入資料庫,因為你以為它們是新款。不過你忘了,第一個型號其實已經有庫存了。幸好,products 資料表有一個限制,要求每個產品名稱都必須唯一。

你準備了一段指令碼,來控管插入時可能發生的錯誤。你也想把可能的錯誤寫入名為 errors 的資料表;而且如果在插入錯誤紀錄時失敗,要顯示錯誤編號與錯誤訊息。

本練習屬於課程

SQL Server 的交易與錯誤處理

檢視課程

練習說明

  • 用一個 CATCH 區塊包住錯誤處理。
  • errors 資料表中插入 'Error inserting a product',並用另一個 TRY 區塊包住這次插入。
  • 用另一個 CATCH 區塊包住巢狀的錯誤處理。
  • 在內層的 CATCH 區塊中,選取錯誤行號與錯誤訊息。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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; 
    ___ ___    
___ ___
編輯並執行程式碼