パラメーターなしの 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
___;
___ ___