1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ストアドファンクション(スカラー値関数)を作成する方法

Last updated at Posted at 2023-10-22

商品区分をパラメータとして受け取り、商品区分に対応する商品名を返す[GetShohinKbn]というスカラー値関数を作成します:smiley:

実行するスクリプト

CREATE FUNCTION GetShohinKbn(
	@ShohinKbn smallint
)
RETURNS NVARCHAR(20)
AS
BEGIN
	
	DECLARE @ShohinKbnName NVARCHAR(20);

	BEGIN SET @ShohinKbnName = CASE @ShohinKbn 
								WHEN 1 THEN 'くだもの'
								WHEN 2 THEN 'やさい'
								WHEN 3 THEN 'お菓子'
								ELSE '' END
	END
	
	RETURN @ShohinKbnName;

END;

上記スクリプトを実行すると、以下のようにスカラー値関数が作成されます。
image.png

実行結果

SELECT 商品ID
      ,商品名
	  ,商品区分
      ,dbo.GetShohinKbn(商品区分) AS 商品区分名
  FROM 商品マスタ

image.png

ポイント

:pencil2: スカラー値関数について

  • 必ず一つの値を返します。スカラー値関数の最後のステートメントはRETURNです。
  • テーブルの値を更新・挿入・削除するようなステートメントは記載できません。
  • スカラー値関数を作成する構文は以下の通りです。
CREATE FUNCTION [ファンクション名](
	[ @入力パラメータ名1 ] [ 入力パラメータ名1のデータ型 ],
	[ @入力パラメータ名2 ] [ 入力パラメータ名2のデータ型 ],
	[ @入力パラメータ名3 ] [ 入力パラメータ名3のデータ型 ],
)
RETURNS [戻り値のデータ型]
AS
BEGIN
	[ ファンクションで処理したい一連の T-SQL ステートメント ]
	
	RETURN [ 戻り値 ];
END;

:pencil2: CASE式での条件分岐について

CASE [対象値]
    WHEN [1] THEN [対象値] = [1]の場合に表示する内容
    WHEN [2] THEN [対象値] = [2]の場合に表示する内容
    WHEN [3] THEN [対象値] = [3]の場合に表示する内容
    ELSE [どの条件も満たさない場合に表示する内容] END
END

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?