SQL Server における引数の省略(ストアド・テーブル値関数)
SQL Server のストアドプロシージャとテーブル値関数で、オプション引数(省略可能な引数)を設定する方法です。ストアドプロシージャとテーブル値関数では呼び出し方が少しだけ異なるので注意が必要です。
オプション引数の設定
引数の後ろに規定値を書くだけです。CREATE PROCEDURE [dbo].[Hoge1] @PrefectureCd numeric(2, 0) = 13 AS BEGIN SELECT * FROM Customer WHERE Prefecture = @PrefectureCd END GO
呼び出し方
引数を渡す場合はいつも通りに書くだけです。省略しても問題はありません。-- 省略した場合 exec Hoge1 -- 省略しない場合 exec Hoge1 14
テーブル値関数の設定
次に、テーブル値関数の場合です。CREATE FUNCTION [dbo].[HogeTable1] ( @PrefectureCd numeric(2, 0) = 13 ) RETURNS TABLE AS RETURN ( SELECT * FROM Customer WHERE Prefecture = @PrefectureCd ) GO
呼び出し方
省略する場合は、default (大文字でも可能) と付けます。-- 省略した場合 select * from HogeTable1(default) -- 省略しない場合 select * from HogeTable1(14)