スカラー ユーザー定義関数

SQL Server における関数とストアドプロシージャの作成

Meghan Kwartler

IT Consultant

ユーザー定義関数(UDF)

【概要】

ルーチン:

  • 入力パラメータを受け取れる
  • 処理を実行する
  • 結果を返す(単一のスカラー値またはテーブル)

【利点】

  • 実行時間を短縮できる
  • ネットワーク通信を削減できる
  • モジュラー プログラミングを可能にする
SQL Server における関数とストアドプロシージャの作成

モジュラー プログラミングとは?

  • ソフトウェア設計手法
  • 機能を独立・交換可能なモジュールに分割
  • コード再利用を促進
  • 可読性を向上
SQL Server における関数とストアドプロシージャの作成

レシピにある関数

レシピにおける関数

SQL Server における関数とストアドプロシージャの作成

Bake 関数の入力パラメータ

焼く関数の入力パラメータ

SQL Server における関数とストアドプロシージャの作成

入力なしのスカラー UDF

-- Scalar function with no input parameters
CREATE FUNCTION GetTomorrow()
    RETURNS date AS BEGIN
RETURN (SELECT DATEADD(day, 1, GETDATE()))
END
SQL Server における関数とストアドプロシージャの作成

1 つのパラメータを持つスカラー UDF

-- Scalar function with one parameter
CREATE FUNCTION GetRideHrsOneDay (@DateParm date)
    RETURNS numeric AS BEGIN
RETURN (
  SELECT 
    SUM(
      DATEDIFF(second, PickupDate, DropoffDate)
    )/ 3600 
  FROM 
    YellowTripData 
  WHERE 
    CONVERT (date, PickupDate) = @DateParm
) END;
SQL Server における関数とストアドプロシージャの作成

2 つのパラメータを持つスカラー UDF

-- Scalar function with two input parameters
CREATE FUNCTION GetRideHrsDateRange (
  @StartDateParm datetime, @EndDateParm datetime
) RETURNS numeric AS BEGIN RETURN (
  SELECT 
    SUM(
      DATEDIFF(second, PickupDate, DropOffDate)
    )/ 3600 
  FROM YellowTripData 
  WHERE 
    PickupDate > @StartDateParm 
    AND DropoffDate < @EndDateParm
) END;
SQL Server における関数とストアドプロシージャの作成

UDF を作成してみましょう

SQL Server における関数とストアドプロシージャの作成

Preparing Video For Download...