○ ユーザー定義関数の種類
・ | スカラ関数 | ||
− | ある1つの値を返す → 組み込み関数(COUNT、MAX 等)と類似 | ||
− | 呼び出す場合、所有者名の指定が必要 | ||
− | RETURN 句でデータ型指定 | ||
− | 関数は BEGIN と END ブロック内で定義、複数ステートメントを含む | ||
・ | インラインテーブル値関数 | ||
− | TABLE 値を返す(関数の内容は1つの SELECT ステートメント) | ||
→ | パラメータを含むビューと類似 | ||
− | RETURN 句では TABLE データ型のみ指定可 | ||
− | 形式は結果セットによって定義 | ||
− | BEGIN と END ブロックは使用しない | ||
・ | 複数ステートメントテーブル関数 | ||
− | TABLE 値を返す | ||
→ | ストアドプロシージャと類似 | ||
− | RETURN 句で TABLE データ型を指定、テーブルの名前と定義を指定 | ||
− | 関数は BEGIN と END ブロック内で定義、複数ステートメントを含む |
○ ストアドプロシージャとの違い
・ | Transact-SQL 文の中で関数の実行結果を利用可 | |
− | スカラ関数 → SELECT 句、WHERE 句、結合句等組み込み関数が使用できる箇所で使用可 | |
− | インラインテーブル値関数、インラインテーブル値関数 → テーブル、ビューが使える FROM 句で使用可 |