読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

引数を受け付けるストアドプロシージャを作る

引数を受け付けるストアドプロシージャのサンプルです。昨日のプロシージャに引数で指定した名前で一覧を絞り込む機能を追加してみました。

 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


参考:@IT - SQL実践講座(20)- ストアドプロシージャの作成