パラメータ名の指定
ストアド プロシージャの各パラメータは、名前が一意になるように定義する必要があります。ストアド プロシージャのパラメータ名は、標準的な Transact-SQL 変数と同様に、1 つの @ 記号から始まる名前にし、オブジェクト識別子の規則に従って命名する必要があります。ストアド プロシージャ内ではパラメータ名を使用して、パラメータ値の取得や変更を実行できます。
ストアド プロシージャに値を渡すには、パラメータ名を明示的に指定して適切な値を代入するか、パラメータ名を指定せずに CREATE PROCEDURE ステートメントで指定したパラメータ値を使用します。たとえば、my_proc というストアド プロシージャが @first、@second、および @third という 3 つのパラメータを必要とする場合、ストアド プロシージャに渡す値は次のようにパラメータ名に代入できます。
EXECUTE my_proc @second = 2, @first = 1, @third = 3;
あるいは、パラメータ名を指定せずに、次のように位置を指定することもできます。
EXECUTE my_proc 1, 2, 3;
ストアド プロシージャの実行時にパラメータ名を指定する場合は、パラメータ値を任意の順序で指定できます。パラメータ名を指定しない場合は、ストアド プロシージャに定義されているとおりの順序で (左から右に) パラメータ値を指定しなければなりません。さらに、値を指定したパラメータがある場合、先行するパラメータは省略可能で既定値があってもすべて値を指定する必要があります。たとえば、my_proc のパラメータがすべて省略可能である場合、最初のパラメータと 2 番目のパラメータの値だけを指定して my_proc を実行することはできますが、2 番目のパラメータと 3 番目のパラメータの値だけを指定して実行することはできません。この規則に従わないと、MicrosoftSQL Server は、どのパラメータが指定されているのかを識別できません。