这是我想要的声明。
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 属性,要么不将其包含在参数集合中