SQLServerで引数の順序を考慮せずに呼び出せるストアドプロシジャを作る

記事内に広告が含まれています。

引数の順序を考慮せずに呼び出せるストアドプロシジャ

ストアドプロシジャを呼び出す際に、引数が多いものは引数の型と順番を考慮して書かないといけないので、結構面倒くさいものです。

そこで、で引数の順序を考慮せずに呼び出せるストアドプロシジャを作ります。

省略可能な引数を持ったストアドプロシジャを作る

まずは省略可能にする為にすべての引数にデフォルト値を持たせます。

指定方法は「@<引数名> <型> = <デフォルト値>」で指定します。

    CREATE PROCEDURE test_proc 
         @key_cd int = 10
        ,@start_date as varchar(10) = '2000/01/01' 
        ,@end_date as varchar(10) = '2020/12/31' 
    AS
    BEGIN
           ・
           ・
           ・

引数を全部指定。

    EXEC test_proc 100, '2012/10/10', '2012/12/31'

すべてが省略可能な引数を持ったストアドプロシジャは引数の順番も自由になる

「@<引数名> = <値>」で呼び出せば該当の引数がどの位置にあっても必要な引数のみを指定して呼び出します。

    EXEC test_proc @start_date = '2012/10/10'

必要な引数のみを指定して呼び出します。

    EXEC test_proc @end_date = '2012/12/31', @start_date = '2012/10/10'

順序が変わっても大丈夫です。

上記で呼出した結果は

    EXEC test_proc 10, '2012/10/10', '2020/12/31'

で呼び出したのと同じ結果にまります。

タイトルとURLをコピーしました