始める無料で始める

パラメーターなしの 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
	___; 
___ ___
コードを編集して実行