繁体   English   中英

在t-sql存储过程中,一个非可选参数可以跟随可选参数吗?

[英]Can a not optional parameter follow an optional one in the t-sql stored procedure?

这是我想要的声明。

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

是的,不要求带有默认值的参数必须在没有默认值的参数之前或之后。 但这意味着如果不包括所有参数,则需要命名参数。 不能说...

EXEC dbo.UpdateTimeProc 5, 5, 1;

...并期望1@ResetCounter一起使用。 如果要省略可选参数,则需要命名参数(如Conrad的答案所示)。

让我重复一遍: 以上语法将不起作用。

您可以选择以这种方式进行操作(在命名第一个参数之后,只需开始命名参数):

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

但我真的不建议这样做,因为人们将不得不查询其他参数。 通常,我们应该首选自记录代码而不是简洁代码。

是的,但是调用时必须使用命名参数

例如,从SSMS呼叫就像

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

如果您正在使用从另一个客户端(让我们说C#)调用它,则需要不对参数设置value属性或不将其包含在Parameter Collection中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM