使用来自 SQL 服务器管理工​​作室的可为空参数执行存储过程

Execute stored procedure with a nullable parameter from SQL server management studio

我有一个存储过程,uspUser_GetUserDetails,有几个参数。它被称为这样的:

uspUser_GetUserDetails 'LastName','FirstName', 'UserId', 'dtDate', 'DistrictId'

如果 dtDate 参数为空,我如何 运行 存储过程。我试过了

uspUser_GetUserDetails 'LastName','FirstName','UserId','','DistrictId'

但它什么也没做。这样的事情行得通吗?

uspUser_GetUserDetails 'LastName','FirstName','UserId',null,'DistrictId'

这需要很长时间才能执行查询而不返回任何结果。请注意,问题不在于如何创建具有可空参数的 SP。我的 SP 在 C# 中运行良好,它在参数中显示 sqlvalue {null}。我只是想从 SQL server management studio 快速测试它,并知道在这种情况下如何将 null 参数传递给它。

CREATE PROCEDURE MyProcName
    @Parameter1 INT = 1,
    @Parameter2 VARCHAR (100) = 'StringValue',
    @Parameter3 VARCHAR (100) = NULL
AS
BEGIN

END

使用Optional参数,调用过程时无需传入

事实证明语法对于我后来尝试的所有 SP 都没有问题。而且不存在性能问题。之前uspUser_GetUserDetails 'LastName','FirstName','UserId',null,'DistrictId'的问题大概是跟"Timeout expired".

有关

或者,EXEC [dbo].[uspSPName] @LastName = N'LastName' @FirstName = N'', @UserId = 0, @dtDate = NULL, @DistrictId = 1