引数を受け付けるストアドプロシージャを作る
引数を受け付けるストアドプロシージャのサンプルです。昨日のプロシージャに引数で指定した名前で一覧を絞り込む機能を追加してみました。
CREATE PROCEDURE proc_GetKittenByName @name VARCHAR(100) AS SELECT * FROM kittens WHERE name = @name
- 引数は、プロシージャ名(proc_GetKittenByName)の後、「AS」の前に、「@<引き数名> <型>」といった感じで指定します。
- プロシージャの処理部分では、「@name」で引数を参照できます。
プロシージャの実行コマンドは次の通り。プロシージャ名の後に引数を指定します。
EXEC proc_GetKittenByName 'mii'
昨日と同じデータであれば、以下のレコードが返されるはず。
name | age |
---|---|
mii | 1 |
引数が複数ある場合。
カンマ区切りです。
CREATE PROCEDURE proc_GetKittenByAge @min INT, @max INT AS SELECT * FROM kittens where age between( @min, @max )
実行。こちらもカンマで。
EXEC proc_GetKittenByAge 0, 100
引数の初期値
「@<引き数名> <型> = <初期値>」として引数のデフォルト値を設定できます。
CREATE PROCEDURE proc_GetKittenByName2 @name VARCHAR(100) = 'mii' AS SELECT * FROM kittens WHERE name = @name
引数なしで実行できます。
EXEC proc_GetKittenByName2
以下のデータが返されるはず。
name | age |
---|---|
mii | 1 |