Pages

2015/12/13

SQL Server における引数の省略(ストアド・テーブル値関数)

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)

まとめ

ストアドの場合は省略と言えますが、テーブル値関数の場合は省略とはいえないですね。もちろん C# などから呼び出す場合でも同じことになるので、テーブル値関数を使用している場合は注意が必要です。
Related Posts Plugin for WordPress, Blogger...