0

ここに私がしたい宣言があります。

CREATE PROCEDURE UpdateTimeProc  
(  
    @Hours int,  
    @Minutes int,  
    @Seconds int = 0,  
    @ResetCounter bit  
)
4

2 に答える 2

6

はい、デフォルト値を持つパラメータがパラメータの前または後に来なければならないという要件はありません。ただし、これは、すべてのパラメーターを含めない場合は、パラメーターに名前を付ける必要があることを意味します。あなたは言うことができません...

EXEC dbo.UpdateTimeProc 5, 5, 1;

1...そして、と一緒に行くことを期待してい@ResetCounterます。オプションのパラメーターを省略したい場合は、パラメーターに名前を付ける必要があります (コンラッドの回答が示すように)。

繰り返しますが、上記の構文は機能しません。

必要に応じて、次のようにすることもできます (最初のパラメーターに名前を付けた後で、パラメーターの名前付けを開始する必要があります)。

EXEC dbo.UpdateTimeProc 5, 5, @ResetCounter = 1;

しかし、人々は他のパラメータが何であるかを調べなければならないので、私は本当にそれをお勧めしません. 一般に、簡潔なコードよりも自己文書化コードを優先する必要があります。

于 2012-07-18T18:08:17.153 に答える
3

はい、ただし、呼び出すときに名前付き引数を使用する必要があります

たとえば、SSMS からの呼び出しは次のようになります。

EXECUTE UpdateTimeProc @Hours = 1, @Minutes =2 , @ResetCounter = 0;

別のクライアント (C# など) から呼び出す場合は、パラメーターに value プロパティを設定しないか、パラメーター コレクションに含めないでください。

于 2012-07-18T18:08:07.703 に答える