在存储过程上声明变量时 VARCHAR(MAX) = NULL 是什么意思

What does VARCHAR(MAX) = NULL mean when declaring variables on stored procedure

我在尝试学习朋友创建存储过程的查询时发现了这个。我想知道在声明变量时 varchar(max) = null 是什么意思?

ALTER PROCEDURE [dbo].[usp_EmployeeBasicData]
    @EmployerCode VARCHAR(MAX) = NULL,
    @LocationCode VARCHAR(MAX) = NULL ,
    @UserId VARCHAR(MAX) = NULL,
    @Module VARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON

    SELECT DISTINCT
        a.EmployerCode,

当参数值未在 EXEC 语句中明确指定时,它是参数的默认值。 NULL 没有什么特别的(在这种情况下),它可以是任何其他合适的值。

例如:

CREATE PROCEDURE MyGreatSP
@Param1 int,
@Param2 varchar(50) = 'AAAA'
AS
SELECT @Param1, @Param2;
GO

EXEC MyGreatSP @Param1 = 1
go
--- 1, AAAA
EXEC MyGreatSP @Param1 = 1, @Param2 = 'BBBBB'
go
--- 1, BBBBB

更多信息:https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/specify-parameters