ここに私がしたい宣言があります。
CREATE PROCEDURE UpdateTimeProc
(
@Hours int,
@Minutes int,
@Seconds int = 0,
@ResetCounter bit
)
ここに私がしたい宣言があります。
CREATE PROCEDURE UpdateTimeProc
(
@Hours int,
@Minutes int,
@Seconds int = 0,
@ResetCounter bit
)
はい、デフォルト値を持つパラメータがパラメータの前または後に来なければならないという要件はありません。ただし、これは、すべてのパラメーターを含めない場合は、パラメーターに名前を付ける必要があることを意味します。あなたは言うことができません...
EXEC dbo.UpdateTimeProc 5, 5, 1;
1
...そして、と一緒に行くことを期待してい@ResetCounter
ます。オプションのパラメーターを省略したい場合は、パラメーターに名前を付ける必要があります (コンラッドの回答が示すように)。
繰り返しますが、上記の構文は機能しません。
必要に応じて、次のようにすることもできます (最初のパラメーターに名前を付けた後で、パラメーターの名前付けを開始する必要があります)。
EXEC dbo.UpdateTimeProc 5, 5, @ResetCounter = 1;
しかし、人々は他のパラメータが何であるかを調べなければならないので、私は本当にそれをお勧めしません. 一般に、簡潔なコードよりも自己文書化コードを優先する必要があります。
はい、ただし、呼び出すときに名前付き引数を使用する必要があります
たとえば、SSMS からの呼び出しは次のようになります。
EXECUTE UpdateTimeProc @Hours = 1, @Minutes =2 , @ResetCounter = 0;
別のクライアント (C# など) から呼び出す場合は、パラメーターに value プロパティを設定しないか、パラメーター コレクションに含めないでください。