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# などから呼び出す場合でも同じことになるので、テーブル値関数を使用している場合は注意が必要です。

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で入力した文字に勝手に取り消し線が入る