商品区分をパラメータとして受け取り、商品区分に対応する商品名を返す[GetShohinKbn]というスカラー値関数を作成します
実行するスクリプト
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;
上記スクリプトを実行すると、以下のようにスカラー値関数が作成されます。
実行結果
SELECT 商品ID
,商品名
,商品区分
,dbo.GetShohinKbn(商品区分) AS 商品区分名
FROM 商品マスタ
ポイント
スカラー値関数について
- 必ず一つの値を返します。スカラー値関数の最後のステートメントはRETURNです。
- テーブルの値を更新・挿入・削除するようなステートメントは記載できません。
- スカラー値関数を作成する構文は以下の通りです。
CREATE FUNCTION [ファンクション名](
[ @入力パラメータ名1 ] [ 入力パラメータ名1のデータ型 ],
[ @入力パラメータ名2 ] [ 入力パラメータ名2のデータ型 ],
[ @入力パラメータ名3 ] [ 入力パラメータ名3のデータ型 ],
)
RETURNS [戻り値のデータ型]
AS
BEGIN
[ ファンクションで処理したい一連の T-SQL ステートメント ]
RETURN [ 戻り値 ];
END;
CASE式での条件分岐について
CASE [対象値]
WHEN [値1] THEN [対象値] = [値1]の場合に表示する内容
WHEN [値2] THEN [対象値] = [値2]の場合に表示する内容
WHEN [値3] THEN [対象値] = [値3]の場合に表示する内容
ELSE [どの条件も満たさない場合に表示する内容] END
END