不帶參數的 THROW
你想要準備一個預存程序,將新產品插入資料庫。在這個預存程序中,你想把可能發生的錯誤插入到名為 errors 的資料表,然後再次拋出原始錯誤。
你會如何撰寫這個預存程序?
本練習屬於課程
SQL Server 的交易與錯誤處理
練習說明
- 用
CATCH區塊包住錯誤處理。 - 將錯誤插入
errors資料表。 - 以分號(
;)結束 INSERT 陳述式。 - 再次拋出原始錯誤。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
CREATE PROCEDURE insert_product
@product_name VARCHAR(50),
@stock INT,
@price DECIMAL
AS
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES (@product_name, @stock, @price);
END TRY
-- Set up the CATCH block
___ ___
-- Insert the error and end the statement with a semicolon
___ ___ errors VALUES ('Error inserting a product')___
-- Re-throw the error
___;
___ ___